我正在使用React Context api将某些状态传递给不同的子组件,并且它正在返回undefined
。
父组件:
export const UserContext = React.createContext();
export class Provider extends Component {
state = {
editGroup: false,
}
render() {
return (
<UserContext.Provider value={{
state: this.state
}}>
{this.props.children}
</UserContext.Provider>
)
}
}
Run Code Online (Sandbox Code Playgroud)
子组件:
import { UserContext } from './index';
return (
<React.Fragment>
<UserContext.Consumer>
{(context) => (
<p>im inside the consumer {console.log(context)}</p>
)}
</UserContext.Consumer>
</React.Fragment>
);
Run Code Online (Sandbox Code Playgroud)
最后console.log
的返回是undefined
,我在这里做错了什么?
Ken*_*nne 22
另外,如果您覆盖它,请确保在构造函数中传递上下文!
export default class Profile extends React.Component {
static contextType = AuthContext;
// make sure you pass the context along to super!
constructor(props, context) {
super(props, context);
...
}
}
Run Code Online (Sandbox Code Playgroud)
在子组件中,将 Consumer 部分中的上下文更改为值(函数参数),因为这是传递给 Provider 的 prop
<UserContext.Consumer>
{(value) => (
<p>im inside the consumer {console.log(value)}</p>
)}
</UserContext.Consumer>
Run Code Online (Sandbox Code Playgroud)
完整的工作样本
import React, { Component } from 'react'
const UserContext = React.createContext()
const Main = () => (
<Parent>
<Child/>
</Parent>
)
export default Main
//***************************************/
class Parent extends Component {
state = {
editGroup: false
}
render() {
return (
<UserContext.Provider value={{
state: this.state
}}>
{this.props.children}
</UserContext.Provider>
)
}
}
//***************************************/
const Child = () => {
return (
<React.Fragment>
<UserContext.Consumer>
{(value) => (
<p>Inside consumer {console.log(value)}</p>
)}
</UserContext.Consumer>
</React.Fragment>
);
}
//***************************************/
Run Code Online (Sandbox Code Playgroud)
输出:状态:{editGroup:false}
归档时间: |
|
查看次数: |
5593 次 |
最近记录: |