У меня есть компонент с <div contentEditable />
внутри. Компонент инициализируется с initialValue
. Обработчик onChange
обновляет value
. Это выглядит примерно так:
const Editable = ({ initialValue }) => {
const [value, setValue] = useState(initialValue);
return (
<div contentEditable onChange={event => setValue(event.currentTarget.value)}>
{value}
</div>
);
};
Теперь, если родительские компоненты передают новый initialValue
, value
и, следовательно, содержимое div
не обновляется, так как состояние уже инициализировано.
Можно ли в таком случае использовать useEffect
следующим образом или есть другой способ?
const Editable = ({ initialValue }) => {
const [value, setValue] = useState(initialValue);
useEffect(() => setValue(initialValue), [initialValue]);
return (
<div contentEditable onChange={event => setValue(event.currentTarget.value)}>
{value}
</div>
);
};