我是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以及使用它的最佳方法的所有帮助和建议!
非常感谢您阅读❤️
问题是您没有从动作创建者返回以dispatch
作为参数之一的函数:
export const clearError = () => dispatch => {
[在幕后,当您将动作创建者传递给mapDispatchToProps时,Redux“ maps”将参数分配给动作创建者,然后将映射的动作创建者分配给Component属性。这也是为什么您必须调用this.props.clearError()
而不是仅调用clearError()
的原因。