Вы не можете поставить (он же отправка из саги) замороженные действия - Redux Saga

Это мои первые вопросы о stackoverflow, пожалуйста, извините, если есть какая-то ошибка.

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

Вы не можете поставить (он же отправка из саги) замороженные действия. Мы должны определить для этих действий специальное неперечислимое свойство для целей планирования. В противном случае вы не смогли бы правильно общаться между сагами и другими подписчиками (упорядочение действий стало бы гораздо менее предсказуемым). Если вы используете redux и вас беспокоит это поведение (замороженные действия), тогда вы можете переключиться на замораживание действий в промежуточном программном обеспечении, а не в создателе действий. Пример реализации:

const freezeActions = store = ›next =› action = ›next (Object.freeze (действие))

Я нигде явно не заморозил свои действия. Я просто вызываю функцию, которая возвращает объект действия. Я не понимаю, почему сага жалуется, что это замороженный объект.

Я воспроизвел свою ошибку в этой песочнице: https://codesandbox.io/s/elastic-zhukovsky-ntmfn


person Parthiban    schedule 07.01.2021    source источник


Ответы (1)


Так что решение было очень простым. Когда я пытался импортировать функцию создателя действия, я не выполнял импорт в {}. Создатель действий не был экспортом по умолчанию, из которого он был определен.

import { setSnackbar } from "../../ducks/snackbar"; //---> senSnackbar should be imported within brackets.
//import setSnackbar from "../../ducks/snackbar"; //->dont do this
import { call, put } from "redux-saga/effects";

export function* handleCheckCoin(action) {
  try {
    let strSymbol = action.payload;
    console.log("Symbol : " + JSON.stringify(strSymbol));
    ///send out a api request to check Crypto Symbol is valid
    yield put(setSnackbar(true, "success", "message"));
  } catch (error) {
    console.log("error while launching set snack bar action : " + error);
  }
}
person Parthiban    schedule 07.01.2021