Javascript 如何从fetch api保存到状态和保存到局部变量结果

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

我有一个返回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)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);
});