反应承诺解决方案不会导致呈现

时间:2018-01-05 05:44:39

标签: reactjs api promise

所以我有一个组件执行通过Promise返回的API调用:

getStuff(url).then(val => this.setState(prevState => {prevState.alltime = val}));

这是在componentDidMount中调用的,并成功解析为状态数组。

我还有一个组件,我将此数组映射到

 const relevantData = this.state[this.state.sortType];
let items= <p> no data</p>;
if (relevantData){
  items = relevantData.map((prop, i) => {
  prop.i = i;
  return(<BoardItem prop={prop} i={i} key={i}/>)})
}

然后在渲染功能

<div> {items} </div>

当我在控制台中看到promise解析时,没有任何渲染,但下次我渲染无关状态时(例如在react devtools中运行$ r.setState({test:&#39; test}),一切都会呈现出来

1 个答案:

答案 0 :(得分:0)

设置状态应该返回表示(修改的)状态属性的单个对象。

componentDidMount方法中,正确的语法是:

getStuff(url).then(val => this.setState({ alltime: val }));

有关详细信息,请参阅https://reactjs.org/docs/state-and-lifecycle.html#using-state-correctly