网站搜索

javascript - 使用 useEffect 响应 Redux 状态变化


我需要在每次属性变化时运行某些东西。在 React 类中,我可以这样做:

componentDidUpdate(prevProps) {
  if (prevProps.x !== this.props.x) {
    // do something
  }
}

我知道在 Hook 中应该使用带有依赖数组的 useEffect:

useEffect(() => {
  // do something
}, [props.x])

但是我需要在 useEffect 的作用域之外做一些事情。

在我的情况下,我需要在 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()
    }
  />

我无法弄清楚该如何做,除了可能在函数组件外部在发生变化时设置一个标志,并手动将其重置。