【问题标题】:React, Redux. Why my dispatch dispatches function body?反应,Redux。为什么我的调度调度函数体?
【发布时间】:2017-08-18 14:38:06
【问题描述】:

这是我的商店创建,我在applyMiddleware 函数中应用redux-thunk

import { createStore, combineReducers, applyMiddleware } from 'redux'
// import { composeWithDevTools } from 'remote-redux-devtools'
import logger from 'redux-logger'
import thunk from 'redux-thunk'
import promise from 'redux-promise-middleware'
import tokenReducer from './reducers/tokenReducer'

const rootReducer = combineReducers({
  tokenReducer
})

const middleware = applyMiddleware(logger, promise, thunk)

let store = createStore(rootReducer, middleware)

export default store

然后我将我的组件连接到存储和mapDispatchToProps

function mapDispatchToProps (dispatch) {
  return {
    getToken: () => dispatch(fetchTokenFromStorage())
  }
}

export default connect(mapStateToProps, mapDispatchToProps)(SplashScreen)

这是我的函数代码fetchTokenFromStorage

export function fetchTokenFromStorage () {
  return (dispatch) => {
    dispatch(getToken())
    AsyncStorage.getItem('AuthToken')
      .then(function (token) {
        dispatch(getTokenSuccess(token))
      })
      .catch(function () {
        dispatch(getTokenFailure())
      })
  }
}

this.props.getToken() 执行后 在我的控制台中,操作如下所示:

动作 ƒ(调度){
调度(getToken());
_reactNative.AsyncStorage.getItem('AuthToken').then(function (token) {
调度(getTokenSuccess(token));
}).catch(函数 () {
调度(获取...

这是我的函数fetchTokenFromStorage 代码。 React 将我的函数转换为动作类型名称。为什么?

【问题讨论】:

  • 我面临同样的问题,您的解决方案不起作用。你还有其他选择吗?

标签: reactjs redux redux-thunk


【解决方案1】:

thunk 必须在applyMiddleware 中排在第一位

const middleware = applyMiddleware(thunk, logger, promise)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2019-02-07
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2019-06-04
    相关资源
    最近更新 更多