如何在异步函数中使用 setState
How to use setState in an asynchronous function
我是运行这个代码:
.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()?
如有任何帮助,我们将不胜感激!
我将 .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 });
});
为了使其正常工作,您的动作创建者 this.props.entryUpdate
需要 return 对其正在进行的异步工作作出承诺。查看错误消息,目前似乎并非如此。
您还需要注意,当组件在 promise 解析时已经卸载时,在异步回调中调用 setState()
可能会导致错误。
一般比较好的方法大概是使用componentWillReceiveProps
等待新值流入组件然后触发setState
。
我是运行这个代码:
.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()?
如有任何帮助,我们将不胜感激!
我将 .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 });
});
为了使其正常工作,您的动作创建者 this.props.entryUpdate
需要 return 对其正在进行的异步工作作出承诺。查看错误消息,目前似乎并非如此。
您还需要注意,当组件在 promise 解析时已经卸载时,在异步回调中调用 setState()
可能会导致错误。
一般比较好的方法大概是使用componentWillReceiveProps
等待新值流入组件然后触发setState
。