javascript - använd useEffect för att reagera på Redux-tillståndsförändring


Jag behöver något som körs varje gång en prop ändras. Med React-klasser kunde jag göra:

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

Jag vet att i hooks ska det vara useEffect med en beroendelista:

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

Men jag behöver göra något utanför useEffect-omfånget.

I mitt fall behöver jag en funktion inom en onChange som endast körs när Redux-tillståndet har ändrats:

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()
    }
  />

Jag kan inte lista ut hur man gör detta, förutom möjligen att sätta en flagga utanför funktionskomponenten när en förändring sker och manuellt sätta tillbaka den.