Вы не можете просто изменить состояние, поэтому
componentDidMount() {
this.context.number = 100;
}
Если вы изменяете состояние, реакция не отображается, потому что вы изменили его. Вы можете сделать следующее:
В приложении:
import React from "react";
import "./styles.css";
import myContext from "./myContext";
import Two from "./Two.js";
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
number: 0
};
}
increase = ()=> this.setState({number:this.state.number+1})
render() {
return (
<myContext.Provider value={{...this.state,increase:this.increase}}>
<div className="App">
<Two />
<h2>{this.state.number}</h2>
</div>
</myContext.Provider>
);
}
}
export default App;
В двух:
import React from "react";
import myContext from "./myContext";
class Two extends React.Component {
static contextType = myContext;
render() {
return (
<myContext.Consumer>
{({ number,increase }) => <h1 onClick={increase}>{number}</h1>}
</myContext.Consumer>
);
}
}
export default Two;