07 useContext高级用法
所谓高级用法,只不过是一些深层知识点 和实用技巧,你甚至可以把本章当做对前面知识点的一个巩固和学习。
同时传递多个共享数据值给1个子组件
实现以下组件需求:
1、有2个共享数据对象 UserContext、NewsContext;
2、父组件为AppComponent、子组件为ChildComponent;
3、父组件需要同时将UserContext、NewsContext的数据同时传递给子组件;
实现代码:
import React,{ useContext } from 'react'
const UserContext = React.createContext();
const NewsContext = React.createContext();
function AppComponent() {
return (
<UserContext.Provider value={{name:'puxiao'}}>
<NewsContext.Provider value={{title:'Hello React Hook.'}}>
<ChildComponent />
</NewsContext.Provider>
</UserContext.Provider>
)
}
function ChildComponent(){
const user = useContext(UserContext);
const news = useContext(NewsContext);
return <div>
{user.name} - {news.title}
</div>
}
export default AppComponent;
代码分析:
1、父组件同时要实现传递2个共享数据对象value值,需要使用<XxxContext.Provider value={obj}>
标签进行2次嵌套。
2、子组件使用了useContext,他可以自由随意使用父组件传递过来的共享数据value,并不需要多次嵌套获取。
同时将1个共享数据值传递给多个子组件
使用<XxxContext.Provider></XxxContext.Provider>
标签将多个子组件包裹起来,即可实现。
<XxxContext.Provider value={{name:'puxiao'}}>
<ComponentA />
<ComponentB />
<ComponentC />
</XxxContext.Provider>
3个子组件<ComponentA /\>
、<ComponentB /\>
、<ComponentC /\>
都可使用useContext获取共享数据值。