Javascript 组件内部的设置状态将接收Props生命周期重新组合
每次我收到新的道具时,我都想改变当地的状态。为此,我使用Javascript 组件内部的设置状态将接收Props生命周期重新组合,javascript,recompose,Javascript,Recompose,每次我收到新的道具时,我都想改变当地的状态。为此,我使用生命周期HOC fromRecompose库。但这并不像我想的那么简单。我要么永远设置该值,要么在使用回调时发生堆栈溢出 从'react redux'导入{connect}; 从“重新组合”导入{withState、withProps、lifecycle、compose}; 从'ducks/entities/tests'导入{selectors,testDelete,testSubscribe}; 从“组件/测试/所有测试”导入{Test
生命周期HOC fromRecompose
库。但这并不像我想的那么简单。我要么永远设置该值,要么在使用回调时发生堆栈溢出
从'react redux'导入{connect};
从“重新组合”导入{withState、withProps、lifecycle、compose};
从'ducks/entities/tests'导入{selectors,testDelete,testSubscribe};
从“组件/测试/所有测试”导入{Tests};
导出默认组合(
连接(选择器、测试、{
onTestDelete:testDelete,
onTestSubscribe:testSubscribe,
}),
带state('isDeleteModeLopen','setDeleteModalShow',false),
带状态('idToDelete','setIdToDelete',0),
用道具(
({
测验,
艾德托德莱特,
setIdToDelete,
setDeleteModalShow,
onTestDelete,
onTestSubscribe,
}) => ({
测试:tests.map((t)=>
t、 合并({
onDeleteModalShow:()=>{
setDeleteModalShow(true);
setIdToDelete(t.get('id'));
},
onSubscribe:()=>onTestSubscribe(t.get('id')),
}),
),
onDeleteModalHide:()=>setDeleteModalShow(false),
onDelete:()=>onTestDelete(idToDelete),
}),
),
生命周期({
componentWillReceiveProps({setDeleteModalShow}){
setDeleteModalShow(false);//不工作“超过最大更新深度”
这是我的国家({
isDeleteModalOpen:错,
});//现在正在工作
},
}),
)(测试)代码>有点老问题,但答案相当简单
如果您正在设置的值已经是您想要的值,则不要更改状态。在代码中,您可以更改生命周期
增强器,以检查isDeleteModeLopen
是否已为false,如下所示:
lifecycle({
componentWillReceiveProps({ setDeleteModalShow, isDeleteModalOpen }) {
if (isDeleteModalOpen) setDeleteModalShow(false);
},
}),
这样,您的组件将接收道具
函数将命中两次,第二次则不会执行任何操作
请注意,此组件上的任何道具更改都会将isDeleteModeLopen
值设置为false