我正在运行此代码:
.then((url) => {
if (url == null || undefined) {
return this.props.image;
} else {
const { image } = this.props;
//entryUpdate is an action creator in redux.
this.props.entryUpdate({ prop: 'image', value: url })
.then(() => {
this.setState({ loading: false });
});
但是我收到以下错误:
如何在动作创建者之后调用的异步函数中格式化setState()?
非常感谢任何帮助!
答案 0 :(得分:2)
为了使其正常工作,您的动作创建者this.props.entryUpdate
需要返回其正在进行的异步工作的承诺。查看错误消息,目前似乎并非如此。
您还需要注意,异步回调中调用setState()
可能会在承诺解析时卸载组件时导致错误。
通常,更好的方法是使用componentWillReceiveProps
等待新值流入组件并然后触发setState
。
答案 1 :(得分:0)
我将.then()函数放在if语句中。但它应该是这样的:
.then((url) => {
if (url == null || undefined) {
return this.props.image;
} else {
const { image } = this.props;
this.props.entryUpdate({ prop: 'image', value: url })
}
})
.then(() => {
this.setState({ loading: false });
});