Мне нужно что-то запускать каждый раз, когда меняется реквизит. С классами React я мог бы сделать:
componentDidUpdate(prevProps) {
if (prevProps.x !== this.props.x) {
// do something
}
}
Я знаю, что в хуках это должно быть useEffect
с массивом зависимостей:
useEffect(() => {
// do something
}, [props.x])
Но мне нужно сделать что-то внеuseEffect scope.
В моем случае мне нужна функция внутри onChange
, которая будет выполняться только при изменении состояния Redux:
const Editor: React.FC = () => {
const { options } = useSelector((state: RootState) => state.settings)
<CodeMirror
onChange={(editor, data, value) => {
// I need to do something only when prev state is different
if (prevOptions !== options) {
editor.refresh()
}
/>
Я не могу понять, как это сделатьэто, помимо возможной установки флага вне функционального компонента, когда происходит изменение, и его ручная установка обратно.