我有一个婚事:
classesAll:[0:{id:1,title:'test1'},1:{id:2,title:'test2'}]
当我'console.log(this.props.classes.classesAll)'进行控制台操作时,它会返回数组的例外值。而是显示以下内容:未定义的[对象对象],[对象对象]
async componentDidMount() {
await this.props.showAllClasses();
console.log("***", this.props.classes.classesAll)
}
Redux action:
export const showAllClasses = () => {
return async dispatch => {
dispatch(pageLoading(true));
await Api.get(`classes.php`).then(res => {
//this.state.all = res.data;
const classesAll = res.data.data;
state.classesAll = classesAll;
});
await dispatch(onChangeClasessAll(state.classesAll));
dispatch(pageLoading(false));
};
};
export const onChangeClasessAll = classesAll => {
const type = CLASSES_ALL;
return { type , classesAll};
};
答案 0 :(得分:0)
无法预测确切原因,只是想知道下一行的作用,
state.classesAll = classesAll;
答案 1 :(得分:0)
因为您的请求是异步的。您应该在请求返回时对其进行管理。在react-native 0.6中,您可以在getDerivedStateFromProps(props,state)方法中完成
static getDerivedStateFromProps(props, state) {
console.log(props.classes.classesAll)
}
在本机0.6之前,您应该在componentWillReceiveProps()方法中进行
componentWillReceiveProps(nextProps) {
console.log(props.classes.classesAll)
}
答案 2 :(得分:0)
请改善您的操作,并确保从服务器获取分辨率数据。
export const showAllClasses = () => dispatch => {
dispatch(pageLoading(true));
const res = await Api.get(`classes.php`);
dispatch(onChangeClasessAll(res.data));
dispatch(pageLoading(false));
};
然后使用渲染方法控制台this.props
render(){
console.log(this.props);
return
......
}
您将在控制台中看到所有道具,因此您可以轻松地从那里获取数据。