透過下方的範例可以看出參數是一層一層傳遞
使用useContext需在父層用Provider包覆,這樣被包覆的子層都能取得資料,就能解決上下文問題,不會有中間層接收到不需要使用的資料。
// 父層
import React, { createContext } from 'react'
import Title from '../components/Title'
export const NameContext = createContext()
const App = () => {
const name = "Ian"
return (
<NameContext.Provider value={name}>
<Title />
</NameContext.Provider>
)
}
export default App
// 接收參數的子層
import React, { useContext } from 'react'
import { NameContext } from '../src/App'
const contextValue = useContext(NameContext) // 這時候就能接收到父層的值,Ian
const Title = () => {
return (
<div>
what's you name: {contextValue}
</div>
)
}
export default Title
codesandbox範例
透過下方範例使用context傳遞資料, App > Demo > Title ,Title組件跳過Demo取得App傳遞的資料
https://codesandbox.io/s/react-context-demo-sl7u8?file=/src/App.jsx
參考:
http://www.ptbird.cn/react-createContex-useContext.html#menu_index_1