Javascript 使用useEffect响应Redux状态更改

Javascript 使用useEffect响应Redux状态更改,javascript,reactjs,typescript,state,lifecycle,Javascript,Reactjs,Typescript,State,Lifecycle,每次道具更换时,我都需要一些东西来运行。使用React类,我可以做到: componentDidUpdate(prevProps){ if(prevProps.x!==此.props.x){ //做点什么 } } 我知道在hooks中,它应该是useffect,带有依赖项数组: useffect(()=>{ //做点什么 },[props.x]) 但是我需要做一些超出useffect范围的事情 在我的例子中,我需要onChange中的函数仅在Redux状态更改时运行: const编辑器:Re

每次道具更换时,我都需要一些东西来运行。使用React类,我可以做到:

componentDidUpdate(prevProps){
if(prevProps.x!==此.props.x){
//做点什么
}
}
我知道在hooks中,它应该是
useffect
,带有依赖项数组:

useffect(()=>{
//做点什么
},[props.x])
但是我需要做一些超出useffect范围的事情

在我的例子中,我需要
onChange
中的函数仅在Redux状态更改时运行:

const编辑器:React.FC=()=>{
const{options}=useSelector((状态:RootState)=>state.settings)
{
//只有当上一个状态不同时,我才需要做一些事情
如果(prevOptions!==选项){
editor.refresh()
}
/>

除了可能在发生更改时在函数组件外部设置一个标志并手动将其设置回原位之外,我不知道如何执行此操作。

我认为您应该在这里采取稍微不同的方法。看起来您的目标是在状态更改时刷新编辑器,因此您正在onChange callb中传递对编辑器的引用确认。通过React.useRef在CodeMiror中创建一个显式引用并对该引用运行effect如何?你是对的,这会起作用,谢谢!结果发现有些东西不起作用,因为正在进行的CodeMirror错误……再次感谢。