到目前为止,我设法找到的所有文档和博客文章都只涉及单个 [value, setValue] 对场景。就我而言,我希望/需要使用 useContext 挂钩将多对 [value, setValue] 变量传递给 Provider。
这是我在 CodePen 中设置的典型示例: https://codepen.io/nardove/pen/XWrZRoE ?editors=0011
const App = () => {
return(
<div>
<MyProvider>
<ComponentA />
</MyProvider>
</div>
);
}
const MyContext = React.createContext();
const MyProvider = (props) => {
const [value, setValue] = React.useState("foo");
return(
<MyContext.Provider value={[value, setValue]}>
{props.children}
</MyContext.Provider>
);
}
const ComponentA = () => {
const [value, setValue] = React.useContext(MyContext);
return(
<div>
<h1>
The value is: {value}
</h1>
</div>
);
}
ReactDOM.render(<App /> , document.getElementById('app'));
如果您可以就如何将多个 [value, setValue] 对传递给 Provider 或我的问题的替代方案分享任何想法,我们将不胜感激
原文由 Ricardo Sanchez 发布,翻译遵循 CC BY-SA 4.0 许可协议
Context.Provider
接受任何值,所以你可以尝试传递一个对象:请注意,在尝试优化无用渲染时有一个警告(确保您不只是 过早优化): 没有针对 Context Consumers 的渲染救助。