在下面的Parent
课程中,this.state.foo
按预期工作,但在Child
课程中,this.props.foo
未定义。
这是一个常见问题,但我从其他线程尝试过的解决方案都没有奏效。
React -v:16.3
class Parent extends Component {
constructor(props) {
super(props)
this.state = {
foo: 'test'
};
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">{this.state.foo}</h1>
</header>
<Child />
</div>
);
}
}
class Child extends Component {
render() {
return (
<div className="child">
<h1>This is a {this.props.foo}</h1>
</div>
);
}
}
export default Parent;
答案 0 :(得分:4)
您需要将道具转移到Child
:
<Child foo={this.state.foo} />
state
的{{1}}不会自动转移到Parent
。
答案 1 :(得分:2)
您需要将道具转移到子组件:
<child foo={this.state.foo} />
您只能阅读子组件中的道具
答案 2 :(得分:1)
确定如果您想在子组件中访问foo
作为道具,那么您需要在子组件中传递this.state.foo,如下所示
<Child foo = {this.state.foo} />
因此,请在代码中更改此内容
class Parent extends Component {
constructor(props) {
super(props)
this.state = {
foo: 'test'
};
}
render() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<h1 className="App-title">{this.state.foo}</h1>
</header>
<Child foo = {this.state.foo} />
</div>
);
}
}
class Child extends Component {
render() {
return (
<div className="child">
<h1>This is a {this.props.foo}</h1>
</div>
);
}
}
export default Parent;