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

React Native中Redux无法更新变量值的技术求助

问题排查与解决:Redux状态无法更新

我仔细看了你的代码,发现核心问题很明确:你只定义了Redux的Action和Reducer,但从来没有触发(dispatch)这个Action来更新状态。你的LoginScreen里只是通过useSelector读取了Redux的初始状态,但没有任何代码去调用testFunc这个Action,所以状态自然一直停留在初始值。

下面是具体的修复步骤:

1. 在组件中引入并使用useDispatch钩子

你需要在LoginScreen里导入Redux的useDispatch钩子,然后用它来触发你的testFunc Action。比如可以在登录按钮点击时触发,或者用useEffect在组件挂载时先测试:

修改后的LoginScreen代码片段:

import { useSelector, useDispatch } from 'react-redux'; // 新增useDispatch导入
import { testFunc } from '../../redux/actions/firebaseActions'; // 导入你的Action

export default function LoginScreen() {
  const [disabled, setDisabled] = useState(false);
  const [userState, setUserState] = useState(initialUserState);
  const testRedux = useSelector(state => state.firebaseTest.theTestingString);
  const dispatch = useDispatch(); // 获取dispatch函数
  const navigation = useNavigation();

  // 可选:组件挂载时就触发Action,测试状态更新
  useEffect(() => {
    dispatch(testFunc());
  }, [dispatch]);

  console.log("当前Redux状态值: " + testRedux); // 每次组件渲染都会打印最新值

  // ... 其他代码不变

  return (
    <View style={styles.container}>
      {/* ... 其他UI组件不变 */}
      <View style={styles.buttonRow}>
        <Button 
          color={disabled ? "gray" : undefined} 
          disabled={disabled} 
          mode={'contained'} 
          icon={'login'} 
          onPress={() => {
            dispatch(testFunc()); // 点击按钮时触发Action
            console.log("点击按钮后的Redux值: " + testRedux);
          }}
        >Login</Button>
      </View>
    </View>
  );
}

2. 验证其他配置是否正确

你的Redux其他配置是没问题的:

  • Store已经用Provider包裹了整个应用,组件可以正确访问Redux状态
  • Reducer里正确处理了TEST_FUNC类型的Action,返回了新的状态对象(使用了扩展运算符...state来保留其他状态,这是正确的做法)
  • useSelector的路径state.firebaseTest.theTestingString和你combineReducers里的key一致,没问题

关于之前Context的类似问题

你提到之前用Context也遇到类似问题,大概率也是同样的逻辑:你只读取了Context的初始值,但没有调用Context提供的更新函数去修改状态。本质都是“只读取不触发更新”的问题。

现在修改后,当你dispatchtestFuncAction后,Reducer会更新状态,组件会因为useSelector检测到状态变化而重新渲染,你就能看到最新的theTestingString值了。

内容的提问来源于stack exchange,提问作者Nicole Lopez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:49:09