почему undefined [объектный объект], [объектный объект] на реагировать-редукса? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть аргумент:

classesAll:[0:{id:1,title:'test1'},1:{id:2,title:'test2'}]

Он не возвращает исключенное значение моего массива, когда я 'console.log (this.props.classes.classesAll)' отправляет его на консоль. Вместо этого он показывает следующее: undefined [объект 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};
      };

Изображение

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Потому что ваш запрос асинхронный. Вы должны утешить его, когда запрос будет возвращен. в реактивной версии 0.6 вы можете сделать это в методе getDerivedStateFromProps (props, state)

static getDerivedStateFromProps(props, state) {
    console.log(props.classes.classesAll)
}

до реактивной версии 0.6, это нужно сделать в методе componentWillReceiveProps ()

componentWillReceiveProps(nextProps) {
 console.log(props.classes.classesAll)
}
0 голосов
/ 24 октября 2019

Пожалуйста, улучшите свои действия и убедитесь, что вы получаете res.data с сервера.

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

YouВы увидите все реквизиты в консоли, чтобы вы могли легко получить данные оттуда.

0 голосов
/ 24 октября 2019

Невозможно предсказать точную причину, просто хотел знать, что делает следующая строка, state.classesAll = classesAll;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...