Redux-调度在操作中未定义

问题描述 投票:1回答:1

我是Redux的新手,但是我有一个我不明白的问题,它无法解决。

问题是,当我想在我的动作内分派时,我遇到了一个错误,他说:

调度不是函数

是的,他是不确定的,这就是要点,为什么他是不确定的?

export const clearError = dispatch => {
    console.log('clear error')
    console.log(dispatch)

    dispatch({
        type: 'CLEAR_ERROR'
    })
}

我从Main.js调用clearError操作,也许我的初始化不正确,但是我尝试了几种方法,例如bindActionCreators ...

Main.js(我如何通过连接传递道具和调度)

const mapStateToProps = (state) => state
const mapDispatchToProps = {
    clearError: clearError
}

export default connect(
    mapStateToProps,
    mapDispatchToProps
)(Main)

我真的很困惑,因为在其他组件中,我使用了以相同方式执行的另外两个动作,并且一切正常...

我不知道它是否可以帮助您了解问题的根源,但我向您展示了如何配置商店以在App.js中调用configureStore()

import {applyMiddleware, createStore} from "redux";
import thunk from 'redux-thunk';

import reducers from './reducers'

const configureStore = () => {
    const middleware = [thunk]
    return createStore(reducers, applyMiddleware(...middleware))
}

export default configureStore

我正在聆听有关redux以及使用它的最佳方法的所有帮助和建议!

非常感谢您阅读❤️

javascript react-native redux expo redux-thunk
1个回答
0
投票

问题是您没有从动作创建者返回以dispatch作为参数之一的函数:

export const clearError = () => dispatch => {

[在幕后,当您将动作创建者传递给mapDispatchToProps时,Redux“ maps”将参数分配给动作创建者,然后将映射的动作创建者分配给Component属性。这也是为什么您必须调用this.props.clearError()而不是仅调用clearError()的原因。

© www.soinside.com 2019 - 2024. All rights reserved.