【发布时间】:2019-11-12 13:34:42
【问题描述】:
我是新来的反应,我试图理解上下文。 所以我尝试为用户创建一个提供者和一个消费者。 Ftm 我只是试图显示该值,但稍后我会将其传递给路由器和其他组件。
这是提供者
const UserContext = React.createContext();
// Create an exportable consumer that can be injected into components
export const UserConsumer = UserContext.Consumer
// Create the provider using a traditional React.Component class
class UserProvider extends React.Component {
render() {
return (
// value prop is where we define what values
// that are accessible to consumer components
<UserContext.Provider value={{
username: 'Crunchy Crunch',
dateJoined: '9/1/18',
membershipLevel: 'Silver'
}}>
{this.props.children}
</UserContext.Provider>
)
}
}
这就是应用程序:
class App extends React.Component {
render() {
return (
<UserProvider>
<Fragment>
<Router>
<Nav />
<UserConsumer>
{state => (
<p>Username: {state.username}</p>
)}
</UserConsumer>
<Switch>
<ProtectedRoute exact path="/profile" component={Profile} />
<Route exact path="/" component={Index} />
</Switch>
</Router>
</Fragment>
</UserProvider>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
我在终端中没有收到任何错误,但我在浏览器中收到此消息:
函数作为 React 子级无效。如果您可能会发生这种情况 返回一个组件而不是从渲染。或者也许你 意味着调用这个函数而不是返回它。
什么是错误,有什么基本的我没有正确地做。
Br
【问题讨论】:
标签: reactjs react-router-dom react-context