You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Redux store中的isSignedIn值?该值已出现在props属性中

问题排查与解决方案

1. Reducer逻辑错误(核心问题)

你当前的Reducer中直接将接口返回的整个response.data赋值给isSignedIn和userId,大概率不符合业务预期:

// 现有写法存在问题:payload是完整的接口返回用户数据,不是布尔类型的登录标识
case 'SIGN_IN':
  return {...state, isSignedIn: action.payload, userId: action.payload};

正常需要从返回数据中提取对应字段,修改为:

case 'SIGN_IN':
  return {
    ...state, 
    isSignedIn: true, // 如果接口返回了登录状态字段,也可以写为 action.payload.isSignedIn
    userId: action.payload.userId // 提取接口返回数据中的用户ID字段
  };

2. 组件内命名冲突注意

你的Login组件内部state定义了同名的isSignedIn字段,要读取Redux注入的属性,必须使用this.props.isSignedIn,this.state.isSignedIn是组件独立维护的本地状态,两者完全无关,不要混淆。

3. mapStateToProps正确性验证

你写的mapStateToProps语法本身没有错误,唯一需要确认的是根Reducer组合时,鉴权Reducer对应的key为auth:

// 根Reducer写法示例,必须保证此处key和mapStateToProps中的state.auth对应
import { combineReducers } from 'redux';
import authReducer from './你的authReducer文件路径';

export default combineReducers({
  auth: authReducer, // 此处key必须为auth,否则state.auth.isSignedIn会读取失败
  // 其他业务Reducer
});

4. 读取值的测试方式

直接在组件render方法中打印/渲染即可验证:

render() {
  // 控制台打印查看值
  console.log('Redux注入的登录状态:', this.props.isSignedIn)
  return(
    <div>
      {/* 页面直接渲染查看结果 */}
      <div>当前登录状态:{String(this.props.isSignedIn)}</div>
      <h4>Email</h4>
      {/* 原有组件代码保持不变 */}
    </div>
  );
};

内容的提问来源于stack exchange,提问作者Gabriel Savian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 08:06:03