Преобразователь Redux - Ошибка. Действия должны быть простыми объектами. Используйте собственное промежуточное ПО для асинхронных действий даже при отправке объекта с типом ключа.

Получение ошибки ниже для определенных функций действия:

Ошибка · Действия должны быть простыми объектами. Используйте собственное промежуточное ПО для асинхронных действий

Приведенный ниже код отлично работает в моей системе, но регистрирует ошибки на bugsnag для разных пользователей.

Файл компонента React:

import React, { Fragment, useEffect, useState, useRef } from 'react';
import { useSelector, useDispatch } from 'react-redux';

 const dispatch = useDispatch();
 const handleTabs = tab => {
    dispatch(resetActionType());
    tabChanged(tab);
  };

Файл действия:

export function resetActionType() {
  return dispatch => {
    dispatch({
      type: 'RESET_ACTION_TYPE',
    });
  };
}

Проверяя различные вопросы на SO, я мог понять, что эта ошибка возникает, когда мы не используем отправку или не вводим ключ в объекте, возвращаемом при отправке. Но я делаю и то, и другое.

Ошибка возникает не на всех машинах/ОС/браузерах. Подходит только для нескольких пользователей.

Что не так с приведенным выше кодом? Любое руководство будет оценено.

Это происходит не для каждого действия, поэтому я думаю, что конфигурация в порядке.

ОБНОВЛЕНИЕ:

Я использую редукционный преобразователь.


person Alwaysalearner    schedule 18.11.2020    source источник


Ответы (1)


export function resetActionType() {
  return dispatch => {
    dispatch({
      type: 'RESET_ACTION_TYPE',
    });
  };
}

этот синтаксис используется, если вы устанавливаете промежуточное ПО redux-thunk. цель redux-thunk - сделать асинхронный запрос, и как только запрос будет разрешен, он отправляет данные ответа. вот почему dispatch передается в качестве аргумента. поскольку у вас нет асинхронного кода внутри создателя действия, вы должны вернуть простой объект.

Когда вы подключитесь к магазину, диспетчер уже вызовет этот генератор действий.

 connect(mapStateToProps, { yourActionCreator })(Component);
person Yilmaz    schedule 19.11.2020
comment
Я использую редукционный преобразователь. - person Alwaysalearner; 19.11.2020