【问题标题】:How can i pass a value to an action using redux logic如何使用 redux 逻辑将值传递给操作
【发布时间】:2019-02-18 15:36:51
【问题描述】:

我有一个看起来像这样的动作

export const setTokenTimeout = date => ({
type: SET_TOKEN_TIMEOUT,
date 

我想使用 Redux Logic 在一些中间件中调度它,看起来像这样

const requestLogin =
createLogic({
type: LOGIN_REQUEST,
latest: true,

process({ axios, push, action, getState }, dispatch, done ) {
  const { code, user } = action.payload
  const config = configure(progress(LOGIN_REQUEST)(dispatch))
  return axios.post(Api.AUTH_LOGIN, { code, user }, config)
  .then(res => {
    dispatch(handleSuccess(LOGIN_SUCCESS)(res))
    dispatch(push(Route.WELCOME))
    dispatch(setTokenTimeout())
    done()
  }).catch( e => {
    window.alert(e)
    dispatch(handleFailure(LOGIN_FAILURE)(e))
    dispatch(reset('LoginForm'))
    done()
  })

}

我想在这样的操作中传递一个日期

const date = new Date()
dispatch(setTokenTimeout(date))

但是当我尝试调度我的 setTokenTimeout 函数时,它会捕捉到一个错误,上面写着

TypeError: (0 , _token2.default) is not a function

它怎么可能不是一个函数?

如果我这样做

dispatch(setTokenTimeout) 

它不会给我一个错误,但我需要能够将一个值传递给它。

【问题讨论】:

  • 如何导入setTokenTimeout()?您使用的是“命名导入”还是“默认导入”?
  • 从 '../actions/token' 导入 setTokenTimeout
  • setTokenTimeout 不是默认导出,所以你想要:import {setTokenTimeout} from '../actions/token'

标签: reactjs redux react-redux redux-logic


【解决方案1】:

是的,您的“命名导出”和“默认导入”不匹配。它们必须是同类。

所以,如果你有export const setTokenTimeout,这是一个命名导出,你需要有import {setTokenTimeout} from "./actions/token",这是一个命名导入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2013-08-07
    • 1970-01-01
    相关资源
    最近更新 更多