将多个值传递给redux saga调用

时间:2018-09-03 17:02:19

标签: redux redux-saga

我需要将2个值传递给发布请求。 我已经这样写了电话

       const { phoneNumber, code } = params;

        yield call(
          apiCall,
          Generic.loginSms,
          actions.loginSmsLink(phoneNumber, code)
        );

动作就是这样。

        export const loginSmsLink = createAction(
          ActionTypes.SMS_CODE_LOGIN,
          phoneNumber => ({ phoneNumber }),
          code => ({ code })
        );

请求

       loginSms: apiCall(({phoneNumber, code}) => ({
         method: 'POST',
         url: '/login',
         data: {
           loginAuthenticationToken: {
            '@type': 'sms',
            phoneNumber,
            code
           }
          }
        })),

该请求仅接受phoneNumber的第一个参数。

2 个答案:

答案 0 :(得分:0)

我相信问题是因为您要将对象作为参数传递给函数。如果您的参数要接受多个参数,则应该可以:

loginSms: apiCall((phoneNumber, code) => ({
  method: 'POST',
  url: '/login',
  data: {
    loginAuthenticationToken: {
      '@type': 'sms',
      phoneNumber,
      code
    }
  }
})),

答案 1 :(得分:0)

如果您阅读Redux Saga文档,则可以看到call具有一个函数和一个参数数组:

call(fn,... args)

您需要在数组中传递多个参数。