reactjs - Redux - mapDispatchToProps - TypeError:_this.props.setCurrentUserHandle 不是函数
问题描述
我试图让一个简单的 react-redux 应用程序工作,但我遇到了一个我无法弄清楚的奇怪错误。我试图简单地设置我当前用户的名字并处理商店,一个设置功能有效,另一个无效。
setCurrentUserFirstName - 有效 setCurrentUserHandle - 无效
从'react'导入反应,{组件}; 从'react-router'导入{链接}; 从'react-redux'导入{连接}; 从'../../store'导入商店; var Utilities = require('../../../common/commonutilities.js'); var RestClient = require('../../../common/restClient.js'); //动作 从'../../actions/userActions'导入{ setCurrentUserHandle, setCurrentUserFirstName }; 类头扩展组件{ 构造函数(道具){ 超级(道具); this.state = {}; RestClient.api.fetchGet('/getcurrentuser', (response) => { 如果(响应。成功){ 这个.setState({ isAuthenticated: 真, 当前用户:response.currentUser }); store.dispatch({ 类型:'USER_DID_LOGIN', 用户登录:真 }); //工作正常 this.props.setCurrentUserFirstName(response.currentUser.firstName); //不起作用并抛出错误:“TypeError:_this.props.setCurrentUserHandle is not a function” this.props.setCurrentUserHandle(response.currentUser.handle); } }, (错误)=> { 控制台日志(错误); }); } 使成为() { 返回 ( {this.props.user.currentUserFirstName},{this.props.user.currentUserHandle} ); } } 常量 mapStateToProps = 函数(存储){ 返回 { //用户属性 用户:store.userState }; }; const mapDispatchToProps = (dispatch) => { 返回{ setCurrentUserFirstName: (currentUserFirstName) =>{ 调度(setCurrentUserFirstName(currentUserFirstName)); } } 返回{ 设置当前用户句柄:(当前用户句柄)=>{ 调度(设置当前用户句柄(当前用户句柄)); } } }; //全部连接 导出默认连接(mapStateToProps,mapDispatchToProps)(Header);
我将它们作为 userActions.js 文件中的操作
导出函数 setCurrentUserFirstName(currentUserFirstName){ 返回{ 类型:'SET_CURRENT_USER_FIRST_NAME', 有效载荷:currentUserFirstName }; } 导出函数 setCurrentUserHandle(currentUserHandle){ 返回{ 类型:'SET_CURRENT_USER_HANDLE', 有效载荷:当前用户句柄 }; }
并且在减速机中
常量初始用户状态 = { 用户:{}, 当前用户名:[], 当前用户句柄:[] }; // 用户减速器 const userReducer = (state = initialUserState, action) => { //使用newState对象是不可变的 让新状态 = 状态; 开关(动作类型){ 案例“SET_CURRENT_USER_FIRST_NAME”: 新状态 = { ...状态, currentUserFirstName:action.payload }; 休息; 案例“SET_CURRENT_USER_HANDLE”: 新状态 = { ...状态, 当前用户句柄:action.payload }; 休息; 休息; 默认: 休息; } 返回新状态; }; 导出默认 userReducer;
我有什么不正确的?
解决方案
你有 2 个 return 语句mapDispatchToProps
- 第二个永远不会到达。您可以返回单个对象,如下所示:
const mapDispatchToProps = (dispatch) => {
return{
setCurrentUserFirstName: (currentUserFirstName) =>{
dispatch( setCurrentUserFirstName(currentUserFirstName));
},
setCurrentUserHandle: (currentUserHandle) =>{
dispatch( setCurrentUserHandle(currentUserHandle));
}
}
};
推荐阅读
- python - Django注册后自动登录
- node.js - 无法在 webstorm 上安装 web3(在 mac 上)
- python - 如何使用 model.getVars() 获取 tupledict 对象?
- java - 在 Java 8 中的标识字段上查找数组列表的子集
- html - iOS Chrome 计算错误的文档高度
- javascript - 推入 react native 的 typescript
- api - 我在进行身份验证时没有在 LinkedIn oauth 2.0 中获得刷新令牌。谁能解释一下?
- r - 是否有使用 MuMin 的疏通功能解决 glmmTMB 模型中不收敛的解决方法?
- .net - dotnet core 加密和 sql server 解密
- html - 溢出:滚动离开其父元素的元素