React Redux问题:组件无法从Reducer获取formId的排查求助
排查Component2无法读取Redux中formId的问题
以下是核心问题点及修复方案:
1. Redux Store结构不匹配
你在组件中通过state.app.eFormReducer获取状态,但实际store的结构并非如此:
- 在
store.js中,你直接使用createStore(reducer)创建store,此时根state就是eFormReducer的状态对象,而非嵌套在app.eFormReducer下。 - 修复方式:
- Customer1组件中,将
useSelector((state) => state.app.eFormReducer)改为useSelector((state) => state) - Component2组件中,将
useSelector(state => state.app.eFormReducer.formId)改为useSelector(state => state.formId)
- Customer1组件中,将
2. Customer1组件中的拼写错误
在错误处理分支中,你调用了小写的udispatch,但定义的dispatch变量是大写的uDispatch:
// 错误写法 udispatch(eFormActions.setSignFormResponsePdfError()); // 正确写法 uDispatch(eFormActions.setSignFormResponsePdfError());
这个拼写错误会导致该错误action无法触发,若API返回的data存在异常,会影响状态更新逻辑。
3. Component2中的语法错误
console.log里使用了中文引号,这会触发JavaScript语法错误:
// 错误写法 console.log(‘formId’, formId1) // 正确写法 console.log('formId', formId1)
额外验证步骤
- 打开Redux DevTools,确认调用
setFormData后,根state中的formId是否被正确更新 - 确认你的应用根组件已被
react-redux的Provider包裹,并传入了正确的store:
import { Provider } from 'react-redux'; import store from './store'; ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') );
内容的提问来源于stack exchange,提问作者sarad
相关产品推荐
相关产品推荐

