Я новичок, чтобы реагировать, и я пытаюсь понять контекст.
Поэтому я попытался создать поставщика и потребителя для пользователя.
Я просто пытаюсь показать значение, но собираюсь передать его в маршрутизатор и другие компоненты позже.
Это провайдер
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