我是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}
。