为什么在react-redux上未定义[object Object],[object Object]?

时间:2019-10-24 12:51:57

标签: javascript reactjs react-native redux react-redux

我有一个婚事:

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

Image

3 个答案:

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

您将在控制台中看到所有道具,因此您可以轻松地从那里获取数据。