используйте useEffect для ответа на изменение состояния Redux - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно что-то запускать каждый раз, когда меняется реквизит. С классами 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()
    }
  />

Я не могу понять, как это сделатьэто, помимо возможной установки флага вне функционального компонента, когда происходит изменение, и его ручная установка обратно.

...