You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

48 lines
1.1 KiB

import React, { createContext } from 'react'
// App -> A -> C
// App数据 -> C
/* 注意事项:
1.上层组件和下层组件关系是相对的,只要存在就可以使用,通常都会通过 App 作为数据提供方
2.这里涉及到的语法都是固定的,有两处:(1)提供的位置:通过 value 提供数据;(2)获取的位置 { value => 使用 value 做什么都可以 } */
// 1.导入 createContext 方法并执行, 解构提供者和消费者
const { Provider, Consumer } = createContext()
function ComA() {
return (
<div>
this is ComA
<ComC />
</div>
)
}
function ComC() {
return (
<div>
thi is ComC,
{/* 3.通过 Consumer 使用数据 */}
<Consumer>{(value) => <span>{value}</span>}</Consumer>
</div>
)
}
class App extends React.Component {
state = {
message: 'this is message',
}
render() {
return (
// 2.使用 provider 包裹根组件
<Provider value={this.state.message}>
<div>
<ComA />
</div>
</Provider>
)
}
}
export default App