我是react-redux的新手,并且正在使用react-thunk中间件。每当我尝试运行 Action 创建器(通过按我的按钮)时,都会出现错误“Uncaught TypeError:dispatch is not function”。有人知道发生了什么吗?

src / actions / index.js

function editUserName (newUserName) {
    return {
        type: 'CHANGE_USER_NAME',
        newUserName: newUserName
    }
}

export function editUserNameDelegate () {
    return function (dispatch, getState) {
        return dispatch(editUserName("thunkUser"))
    }
}

src / containers / admin.js
import { editUserNameDelegate } from '../actions/index'
...
<input type="button" onClick={ editUserNameDelegate() } value="edit UserName" />

最佳答案

您正在editUserNameDelegate内部执行render函数,而不是将其作为onClick处理程序传递。您需要onClick={editUserNameDelegate}

另外,如果以这种方式编写它,则需要确保在调用该函数时绑定(bind)该函数以进行分派(dispatch)。您可以这样做:
export default connect(null, {editUserNameDelegate})(MyComponent)
然后在渲染函数中传递onClick={this.props.editUserNameDelegate}

08-25 11:01