How to change React context programmatically? How to change React context programmatically? javascript javascript

How to change React context programmatically?


In order to use Context, you need a Provider which takes a value, and that value could come from the state of the component and be updated

for instance

class App extends React.Component {   state = {      isAuth: false;   }   componentDidMount() {      APIcall().then((res) => { this.setState({isAuth: res}) // update isAuth })   }   render() {       <LoggedUserContext.Provider value={this.state.isAuth}>           <Child />       </LoggedUserContext.Provider>   }}

The section about dynamic context explains it


Wrap your consuming component in a provider component:

import React from 'react';const SERVER_URL = 'http://some_url.com';const LoggedUserContext = React.createContext();class App extends React.Component {    state = {        user: null,        id: 123    }    componentDidMount() {        axios.get(`${SERVER_URL}/users/${this.state.id}`).then(response => {             const user = response.data.user; // I can only guess here            this.setState({user});        });    }    render() {        return (            <LoggedUserContext.Provider value={this.state.user}>                <LoggedUserContext.Consumer>                    {user => (                        (user.name) ? user.name : 'Choose a user or create one';                    )}                </LoggedUserContext.Consumer>            </LoggedUserContext.Provider>        );    }}

I gave a complete example to make it even clearer (untested). See the docs for an example with better component composition.