Javascript 反应/重复点火动作->;在更新存储之前进行渲染
A有一个简单反应/重复使用应用程序。我从API异步获取数据,但组件不等待数据并触发渲染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; //-------
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()}
)
}
我现在用这种方式,但你认为它是最好的方式??你可以在数据加载之前渲染“加载”图形/微调器。我现在用这种方式,但你认为它是最好的方式??你可以在数据加载之前渲染“加载”图形/微调器。