react
runtime_error
ai_generated
true
错误:'MyContext' 的上下文值未定义。您是否忘记使用带有值的 Provider 包装组件?
Error: The context value for 'MyContext' is undefined. Did you forget to wrap your component in a Provider with a value?
ID: react/context-value-undefined-reducer
90%修复率
85%置信度
1证据数
2023-03-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| React 18.2.0 | active | — | — | — |
| React 19.0.0-beta.1 | active | — | — | — |
根因分析
组件尝试使用未定义的上下文值,因为对应的 Provider 缺失或未提供 value 属性。
English
A component tries to consume a context value that is undefined because the corresponding Provider is missing or does not provide a value prop.
官方文档
https://react.dev/reference/react/createContext#providing-context解决方案
-
Ensure the component is wrapped in the correct Provider with a value prop. Example: <MyContext.Provider value={someValue}><ChildComponent /></MyContext.Provider> -
Check the context creation file to ensure the context is exported and imported correctly. Use named exports to avoid confusion.
-
If using useReducer, pass the dispatch as part of the context value: const [state, dispatch] = useReducer(reducer, initialState); <MyContext.Provider value={{ state, dispatch }}>...</MyContext.Provider>
无效尝试
常见但无效的做法:
-
70% 失败
The default value is used only if there is no Provider; if a Provider exists without a value, it still passes undefined.
-
80% 失败
This causes a mismatch between the context used in the Provider and the consumer.
-
90% 失败
Without a value prop, the Provider passes undefined, which is still undefined.