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
    ......
}