我有一個父母,孩子和孫子組件。我有不同的輸入字段,並希望將值從孫子到孩子傳遞給父母,最終我將值設置爲狀態。我沒有包括我所有的代碼,但是這樣做是必要的,因爲我的代碼中有其他的東西,我沒有在這篇文章中將它包括進來,因爲它是不相關的。林不知道如何做到這一點,並試圖實現我在網上找到的,但是,它不工作。有任何想法嗎?謝謝!!反應:如何將值從孫子通過孩子傳遞給父母?
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
input: {}
};
this.changeName = this.changeName.bind(this);
this.handleInput = this.handleInput.bind(this);
}
changeName(newName) {
this.setState({
name: newName
});
}
handleInput() {
console.log("helloooooo", this.state.name)
}
render() {
return (
<div>
<Child onChange={this.changeName} onClick={this.handleInput}/>
</div>
)
}
}
class Child extends React.Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.handleInput2 = this.handleInput2.bind(this);
}
handleChange(e) {
this.props.handleChange(e);
}
handleInput2() {
this.props.onClick()
}
render() {
return (
<div>
<GrandChild onChange={this.handleChange}/>
<input type="submit" onClick={this.handleInput2}/>
</div>
)
}
}
class GrandChild extends React.Component {
constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.handleInput2 = this.handleInput2.bind(this);
}
handleChange(e) {
const input = this.props.input;
input[name] = e.target.value;
}
render() {
return (
<div>
<input name="firstname" onChange={this.handleChange}/>
<input name="lastname" onChange={this.handleChange}/>
</div>
)
}
這打破了很大一部分組件隔離。組成部分不應該與父母溝通,他們甚至不應該「意識到」父母成分。父母*可以控制孩子*,但不能反過來。 – Li357