Javascript 如何从fetch api保存到状态和保存到局部变量结果
我有一个返回json的函数:Javascript 如何从fetch api保存到状态和保存到局部变量结果,javascript,json,reactjs,Javascript,Json,Reactjs,我有一个返回json的函数: const mapDispatchToProps = dispatch => { return { articleDetail: (id) => { return dispatch(articles.articleDetail(id)); } } }; 我在这里得到通话结果: class ArticleDetail extends Component { constructor(props) { sup
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)return me:{id:1,作者:{…},标题:“第一篇测试文章”,描述:“sadasdsads”,img_名称:“D.png”,…}
但是我不能像asd那样,在函数外部的状态下写这个结果
如果您能帮助我,我将不胜感激,也许有办法在state中编写this.props.articledeail()的结果
我还想问一下,是否可以将调用此函数的结果写入一个变量,然后函数返回promise
此外,是否可以在此函数上设置一些变量,并记录my console.log“返回”到外部变量的内容
非常感谢您抽出时间。您是如何检查状态是否发生变化的?
为了正确检查状态是否已更新,对函数应用回调,如下所示(请记住
setState
是异步的):
关于您关于在lifecycle methid中设置状态的评论,那么只要您在
componentWillMount
中而不是在componentDidMount
中进行设置,就可以了。但是我不能像在asd中那样,在函数外部的状态下编写此结果。您是否收到错误?否,我只是没有得到状态的改变。我只是对我列出的这3个操作感兴趣,它们可能使用javascripthow语法检查状态是否改变?是否有一些ui元素附加到它?另外,您可以尝试将状态更改更改为this.setState({art:res.article},()=>{console.log(this.state.art);})代码>这样您就可以看到它是否更改了。谢谢,实际上是的,状态正在更新,显然我在那里写了console.log,我需要再次重新读取序列组件是如何加载的。我可以正确理解,这样我就可以将api响应中的数据写入上面在这个生命周期函数中声明的变量?
this.setState({ art: res.article }, () => {
// this happens after the state has been updated
console.log(this.state.art);
});