首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法setState,而不管如何使setState同步

无法setState,而不管如何使setState同步
EN

Stack Overflow用户
提问于 2020-07-15 14:24:24
回答 1查看 68关注 0票数 0

我正在学习如何使用同步setState,但它并不适用于我的项目。我想在从Axios获得listingInfo之后更新状态,但是它不能工作,但是res.data工作正常。

代码语言:javascript
复制
class ListingItem extends Component {
  constructor(props) {
    super(props);
    this.state = {
      listingInfo: {},
      open: false,
    };
    this.getListingData(this.props.itemId);
  }

  setStateSynchronous(stateUpdate) {
    return new Promise((resolve) => {
      this.setState(stateUpdate, () => resolve());
    });
  }

  getListingData = async (item_id) => {
    try {
      const res = await axios.get(`http://localhost:5000/api/items/${item_id}`);
      console.log(res.data);//it's working
      await this.setStateSynchronous({ listingInfo: res.data });
      // this.setState({
      //   listingInfo: res.data,
      // });
      
      console.log(this.state.listingInfo);//no result
    } catch (err) {
      setAlert('Fail to obtain listings', 'error');
    }
  };

我真的很感激你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-16 05:05:15

感谢@PrathapReddy!在完成setState之前,我使用了条件呈现来防止数据呈现。我在呈现部分添加了这一行代码:

代码语言:javascript
复制
render() {
    if (Object.keys(this.state.listingInfo).length === 0) {
      return (
        <div>
          Loading
        </div>
      );
    } else {
      return //put what you want to initially render here
    }
}

另外,不需要修改setState,普通的setState就可以了。希望这是有用的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62917166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档