Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应/重复点火动作->;在更新存储之前进行渲染_Javascript_Reactjs_Asynchronous_Redux - Fatal编程技术网

Javascript 反应/重复点火动作->;在更新存储之前进行渲染

Javascript 反应/重复点火动作->;在更新存储之前进行渲染,javascript,reactjs,asynchronous,redux,Javascript,Reactjs,Asynchronous,Redux,A有一个简单反应/重复使用应用程序。我从API异步获取数据,但组件不等待数据并触发渲染 class RestaurantList extends React.Component { componentWillMount() { this.props.getRestaurantList(); } render() { console.log("render"); let {translation} = store.getState().app; //-------

A有一个简单反应/重复使用应用程序。我从API异步获取数据,但组件不等待数据并触发渲染

class RestaurantList extends React.Component {
componentWillMount() {
    this.props.getRestaurantList();
}

render() {
    console.log("render");
    let {translation} = store.getState().app;
    //------------I NEED DATA ON THIS LET (restaurantList)
    let {restaurantList} = this.props.restaurants;


    return (
        <div>
            <TableContainer data={restaurantList}/>
        </div>

    )


   }
}
const mapStateToProps = (state) => {
return {
    restaurants: state.restaurants
};
};

const mapDispatchToProps = (dispatch) => {
    return {
        getRestaurantList() {
            dispatch(ACTIONS.getRestaurantList());
        },
    };
};

export default connect(mapStateToProps, mapDispatchToProps)(RestaurantList);

我的组件激发方法componenmount将在render()和下一个存储之后装载,该存储将更新存储并为我的变量设置好数据。也许你会给我一些建议,告诉我如何在渲染我的抓取数据时这样做,因为现在在我的表上,我一开始就传输未定义的。也许您可以给我一个使用其他框架(如redux saga或其他框架)的示例。

您可以尝试有条件地呈现您的TableContainer组件,以便只有在有可用数据时才会呈现该表:

renderTable() {
  let { restaurantList } = this.props.restaurants

  if (restaurantList) {
    return <TableContainer data={ restaurantList } />
  } else {
    return <div></div>
  }
}

render() {
  return (
    <div>
      { this.renderTable() }
    </div>
  )
}
renderable(){
让{restaurantList}=this.props.restaurants
if(餐厅列表){
返回
}否则{
返回
}
}
render(){
返回(
{this.renderable()}
)
}

您可以尝试有条件地呈现您的TableContainer组件,以便只有在数据可用时才会呈现表格:

renderTable() {
  let { restaurantList } = this.props.restaurants

  if (restaurantList) {
    return <TableContainer data={ restaurantList } />
  } else {
    return <div></div>
  }
}

render() {
  return (
    <div>
      { this.renderTable() }
    </div>
  )
}
renderable(){
让{restaurantList}=this.props.restaurants
if(餐厅列表){
返回
}否则{
返回
}
}
render(){
返回(
{this.renderable()}
)
}

我现在用这种方式,但你认为它是最好的方式??你可以在数据加载之前渲染“加载”图形/微调器。我现在用这种方式,但你认为它是最好的方式??你可以在数据加载之前渲染“加载”图形/微调器。