调用API反应模式给了无限循环
问题描述:
componentWillReceiveProps(nextProps) {
if(nextProps.isOpen){
const { selectedItemId} = this.props;
//ajax
}
}
我有需要调用API一个模态分量,我不喜欢这样,ISOPEN是打开和关闭模式的一个标志,但这种做法我无限通话。调用API反应模式给了无限循环
答
只需使用一个标志,不要求所有的时间,而你正在申请/渲染
componentWillReceiveProps(nextProps) {
if(nextProps.isOpen && !this.requesting){
const { selectedItemId } = this.props;
this.requesting = true;
//ajax
ajax.then(() => {
this.requesting = false;
})
}
}
+0
虽然这很奇怪,但我认为Panther所说的更有意义。 –
+0
这取决于你想如何工作,以及你如何需要它。例如,如果您需要在模态打开的情况下发出请求(例如,您单击模态中的某些内容,然后需要提出请求)。你的问题在用例上不太清楚,所以我只是为你当前的实现编写它。 –
'每当有道具的变化componentWillReceiveProps'将被调用。它可以来自内部状态或您自己的应用程序状态。将'ajax'写入'componentDidMount'中,并且不要渲染你的'modal',直到'isOpen'为真。 – Panther
我在我的模态的contstuctor中做了一个console.log,它在我加载包含它的页面时触发。不要渲染你的意思是什么? –
'componentWillReceiveProps'将被称为'n'次。你必须在父组件的渲染方法中有条件地渲染你的模态,比如'{this.state.isOpen? ( ):null}' –
Panther