Javascript 为什么在react redux上未定义[对象对象],[对象对象对象]?
我有一份协议:Javascript 为什么在react redux上未定义[对象对象],[对象对象对象]?,javascript,reactjs,react-native,redux,react-redux,Javascript,Reactjs,React Native,Redux,React Redux,我有一份协议: classesAll:[0:{id:1,title:'test1'},1:{id:2,title:'test2'}] 当我将“console.log(this.props.classes.classesAll)”返回到控制台时,它不会返回数组的例外值。相反,它显示以下内容:未定义的[object object],[object object] async componentDidMount() { await this.props.showAllClasses();
classesAll:[0:{id:1,title:'test1'},1:{id:2,title:'test2'}]
当我将“console.log(this.props.classes.classesAll)”返回到控制台时,它不会返回数组的例外值。相反,它显示以下内容:未定义的[object object],[object object]
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};
};
无法预测确切的原因,只是想知道下面这条线的作用是什么,
state.classesAll=classesAll代码>,因为您的请求是异步的。当请求返回时,您应该对其进行控制台。在react native 0.6中,您可以通过getDerivedStateFromProps(props,state)方法执行此操作
在react native 0.6之前,应该在componentWillReceiveProps()方法中执行此操作
请改进您的操作,并确保您正在从服务器获取res.data
export const showAllClasses = () => dispatch => {
dispatch(pageLoading(true));
const res = await Api.get(`classes.php`);
dispatch(onChangeClasessAll(res.data));
dispatch(pageLoading(false));
};
然后在render方法中控制台this.props,如下所示
render(){
console.log(this.props);
return
......
}
您将在控制台中看到所有道具,因此您可以轻松地从那里获取数据 从控制台输出来看,您似乎正在记录{type,classesAll}
,其中type
是undefined
,并且classesAll
的元素正在转换为字符串。从未使用过Redux,因此无法进一步评论,但可能会有所帮助。console.log(res.data[0])在Api.get call之后显示了什么?这是什么类型的数组[0:{id:1,title:'test1'},1:{id:2,title:'test2'}]
?这将抛出一个错误。@Mike-console.log(res.data[0]);show undefined,但是console.log(res.data)显示数组中的数据。我在类之前创建了一个变量,以便我可以在其中保存数据。const state={classesAll:[],}再次向我显示:未定义的[object object],[object object]@Ranaa您是否将道具映射到redux state?Api.get可以从服务器获取数据,我的操作工作正常,但我无法在commpoent中访问它。你用连接了吗?是的,我用连接。导出默认连接(mapStateToProps、mapDispatchToProps)(类);同时分享您从服务器获得的响应。请参见:我的组件网
export const showAllClasses = () => dispatch => {
dispatch(pageLoading(true));
const res = await Api.get(`classes.php`);
dispatch(onChangeClasessAll(res.data));
dispatch(pageLoading(false));
};
render(){
console.log(this.props);
return
......
}