我有一个返回json的函数:
const mapDispatchToProps = dispatch => {
return {
articleDetail: (id) => {
return dispatch(articles.articleDetail(id));
}
}
};
我在这里得到通话结果:
class ArticleDetail extends Component {
constructor(props) {
super(props);
this.state = {
articleId: props.match.params.id,
asd: "",
art:{}
};
}
componentWillMount() {
this.props.articleDetail(this.state.articleId).then((res) => {
console.log(res.article);
this.setState({art:res.article})
});
this.setState({asd: "asda"})
}
console.log(res.article)返回我: {id:1,作者:{…},标题:“第一篇测试文章”,说明:“ sadasdsads”,img_name:“ D.png”, …}
但是我不能像在asd上那样在函数外部的状态下写入此结果。
如果您能帮助我,我将不胜感激,也许有某种方式可以将this.props.articleDetail()的结果写成状态。
我还想问我是否可以将调用此函数的结果写入变量,并且该函数返回promise
此外,是否可以在此函数上设置一些变量,并记录我的console.log返回到我的外部变量的内容。
非常感谢您的宝贵时间。
答案 0 :(得分:1)
您如何检查状态是否发生变化?
为了正确检查状态是否已更新,请像这样对setState
函数应用回调(请注意setState
是异步的):
this.setState({ art: res.article }, () => {
// this happens after the state has been updated
console.log(this.state.art);
});
关于您关于在生命周期方法中设置状态的评论,那么只要您在componentWillMount
而不是componentDidMount
中进行设置就可以了。