Могу ли я заранее связать значение аргумента при использовании redux-действий?
У меня есть действие и сага.
Я хочу указать значение для экземпляра действия изнутри actions.js
,
Я также хочу предоставить значение экземпляру action из саги.
Поэтому, когда вызывается редуктор, связанный с действием, он получает два значения в полезной нагрузке.
Как я могу это сделать?
actions.js
import { createAction } from 'redux-actions';
export const myAction = createAction('ACTION_NAME'); // How do I supply payload value "foo" here?
sagas.js
function* mySaga({
yield put(myAction()); // How do I supply payload value "bar" here?
}
reducers.js
export default handleActions({
'ACTION_NAME': handleReduce(state, { payload: { foo, bar } }) =>
{ /* foo and bar should be defined */ }) });
1 ответ
При создании действия вы можете добавить к нему любую полезную нагрузку. Теперь вы просто создаете действие с пустой строкой и без полезной нагрузки.
createAction(type, payloadCreator)
payloadCreator должен быть функцией, неопределенной или нулевой
createAction('ACTION_NAME', () => { reuturn {foo: 'bar'}; })
в саге put принимает пустой объект с типом (string) и полезной нагрузкой тоже
Например yield put({ type: 'PRODUCTS_RECEIVED', products })
Так что, если createAction возвращает объект с типом и полезной нагрузкой, он будет также использоваться sagas. Вы можете использовать console.log перед yeld, чтобы проверить, что возвращает ваш создатель действий.
console.log('Action for saga:', myAction());
yield put(myAction()); // How do I supply payload value "bar" here?