React Redux - 在一个简单的动作中调用一个函数会导致“not a function”错误

时间:2017-05-02 06:49:52

标签: javascript reactjs react-redux

我在reduxer.js文件中找到了一个名为“logoutUser()”的文件:

export const logoutUser = () =>
  (dispatch, getState) => {
    clearJwt()
      ({ type: LOGOUT_USER })
  }

我有函数“clearJwt()”,它位于文件jwt.js:

export const clearJwt = () => {
  localStorage.removeItem(TOKEN_KEY)
}

当它到达“clearJwt()”时出现此错误:

reducer.js:77 Uncaught TypeError: (0 , _jwt.clearJwt)(...) is not a function
at reducer.js:77
at index.js:11
at Object.logoutUser (LogoutContainer.jsx:28)
at LogoutContainer.componentDidMount (LogoutContainer.jsx:14)
at LogoutContainer.proxiedComponentDidMount (createPrototypeProxy.js:61)

jwt.js在reducer.js文件中按此行导入:

import { saveJwt, getJwt, clearJwt } from '../auth/jwt'

我在其他地方调用过这个函数,特别是在函数正上方的另一个函数中出现的catch

    .catch(error => {
    clearJwt()
    dispatch({ type: ERROR_LOGIN_TOKEN, payload: error.message })
  })

..这有效!

但是,它会在我的logoutUser()函数中抛出上述错误。

它应该只是去那个功能,但它错了..有人可能指出我正确的方向..

1 个答案:

答案 0 :(得分:1)

您在此处调用clearJwt()的返回值:

clearJwt()
  ({ type: LOGOUT_USER })

因此调用clearJwt(),但它返回undefined(因为它是一个没有return语句的块箭头函数)。然后将调用值(这是第二行),但这会失败,因为,正如错误消息所述,“undefined不是函数”。