今天咱們的主角是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的使用方法和基本注意事項,有不足之處歡迎指出。函數式編程