首页 > 解决方案 > Redux saga 将多个参数作为动作传递并进入 saga 函数 React native

问题描述

我想在 Redux saga 动作中传递多个参数,所以我做了如下代码

this.props.addCartData(_addToCartObject, 'guest') 

在调度里面我像下面一样经过

addCartData: (value, isFor) => dispatch(addCartRequest(value, isFor)),

在传奇功能中,我正在访问如下

function* callAddCart(data, isFor) {
  try {
      console.log("isFor--->", isFor);
     }
   }

export function* cartSaga() {
return yield all([
    yield takeLatest(actionTypes.ADD_CART_REQUEST, callAddCart),
]);

}

但是我记录了 isFor 我没有定义你能帮我解决我在这方面做错了什么吗?

标签: react-nativereduxredux-saga

解决方案


这一切都围绕您的动作创建者工作addCartRequest

假设它返回一个对象,例如:

function addCartRequest(value, isFor) {
  return {
    type: actionTypes.ADD_CART_REQUEST,
    value,
    isFor
  };
}

你的传奇观察者yield takeLatest(actionTypes.ADD_CART_REQUEST, callAddCart),会将整个对象传递给callAddCart

假设第一个参数是整个对象,您可以访问它们的值:

function callAddCart(action) {
  console.log("actionType--->", action.type);
  console.log("value--->", action.value);
  console.log("isFor--->", action.isFor);
}

我在 CodeSandbox 中创建了一个工作示例:

https://codesandbox.io/s/2021-03-25-redux-saga-action-creator-payload-hk4sb?file=/src/App.js


推荐阅读