今天咱们的主角是useContext,顾名思义就是context(上下文),这是react机制里常常用到的特性,全局属性的访问和通讯,让咱们来一块儿看看它的使用场景和注意事项吧。javascript
const TestContext = React.createContext()
function Parent() {
return <TestContext.Provider value={'test context'}></TestContext.Provider> } 复制代码
TestContext.Provider的props必需是value,不然就会报错java
function Child() {
return <TestContext.Consumer>value => <div>I am {value}}</div></TestContext.Consumer> } function App() { return <Parent> <Child /> </Parent> } 复制代码
const TestContext = React.createContext()
function Parent() {
return <TestContext.Provider value={'test context'}></TestContext.Provider> } function Child() { const value = useContext(TestContext) return <div>I am {value}</div> } 复制代码
使用最新的useContext只须要把建立的上下文对象当作入参传入,便可拿到provider传入的value值,省去了consumer的建立和定义。react
以下是一个嵌套的context,正常状况下须要这样书写:编程
function Child() {
return <TestContext.Consumer>
user => {
<div>{user.age}</div>
{
user.name ? <TestContext.Consumer>name => <div>{name}</div></TestContext.Consumer> : null
}
}
</TestContext.Consumer>
}
复制代码
使用useContextide
function Child() {
const user = useContext(UserContext)
const name = useContext(NameContext)
return <div> {user.age} { user.name ? <div>{name}</div> : null } </div>
}
复制代码
以上就是useContext的使用方法和基本注意事项,有不足之处欢迎指出。函数式编程