Я написал настраиваемый компонент для редактирования контента, он выглядит следующим образом
export default class TextEditor extends React.Component {
constructor(props) {
super(props);
this.ref = React.createRef();
}
onChange = (e) => {
let value = e.target.innerHTML;
this.props.onChange(value);
}
render() {
const { enabled , onChange , style, className, value } = this.props;
return (
<div>
<div contentEditable={enabled}
dangerouslySetInnerHTML={{ __html: value }}
ref={this.ref}
onInput={this.onChange}
style={{
...style,
height: '80px',
overflow: 'auto',
cursor: enabled ? 'text' : 'inherit',
}}
className={`form-control form-control-sm ${className}`}
placeholder="Optional Notes..."
/>
</div>
)
}
}
где бы я ни печатал что-либо в редактируемом контенте, курсор перемещается в начало редактируемой области.
это потому, что this.props.onChange (значение); обновляет значение снаружи и происходит повторное рендеринг. Как предотвратить сброс курсора при повторном рендеринге ??