如何保存到状态并保存到获取API的本地变量结果

时间:2018-10-21 05:26:21

标签: javascript json reactjs

我有一个返回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返回到我的外部变量的内容。

非常感谢您的宝贵时间。

1 个答案:

答案 0 :(得分:1)

您如何检查状态是否发生变化?
为了正确检查状态是否已更新,请像这样对setState函数应用回调(请注意setState是异步的):

this.setState({ art: res.article }, () => {
    // this happens after the state has been updated
    console.log(this.state.art);
});

关于您关于在生命周期方法中设置状态的评论,那么只要您在componentWillMount而不是componentDidMount中进行设置就可以了。