【发布时间】:2019-12-04 18:14:01
【问题描述】:
App.js - 父组件
import React from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import ChildComponent1 from './ChildComponent1';
import ChildComponent2 from './ChildComponent2';
import Context from './Context';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
messageThatllChange: "changing message",
};
}
render() {
return (
<Router>
<Switch>
<Context.Provider value={this.state.messageThatllChange}>
<Route exact path='/' component={ChildComponent1} />
<Route path='/chat' component={ChildComponent2} />
</Context.Provider>
</Switch>
</Router>
);
}
}
export default App;
ChildComponent1.js - 子组件
import React from 'react';
import Context from './Context';
class Join extends React.Component {
static contextType = Context;
constructor(props) {
super(props);
console.log(this.context); // this.context returns undefined.
}
render() {
return (
<div>
{/* Something important here */}
</div>
);
}
}
// Join.contextType = Context; // tried this too
export default Join;
在尝试打印 this.context 的子组件 1 构造函数中返回 undefined。
如何将上下文从父级传递给子级?我做错了什么?
【问题讨论】:
-
我可以理解反对意见,但在文档页面reactjs.org/docs/context.html#classcontexttype 中没有提到构造函数中
this.context的值将是undefined。
标签: javascript reactjs react-router-dom react-context