我有一个名为App
的父组件,还有一个名为Left
的子组件。
Left
组件具有两个分别称为Settings
和NotesList
class Left extends Component {
constructor() {
super();
this.state = { isAddNewNoteClicked: false };
}
render() {
return (
<section>
<Settings onNew={this.onNewNote.bind(this)} />
<NotesList newNote={this.state.isAddNewNoteClicked} />
</section>
);
}
onNewNote = (isAddNewNoteClicked) => {
this.setState({ isAddNewNoteClicked });
{/* SEE EDIT */}
{/* this.props.onNewNote(this.state.isAddNewNoteClicked); */}
{/* SEE EDIT #2 */}
this.props.onNewNote(isAddNewNoteClicked);
}
}
Settings
组件具有一个按钮,当单击该按钮时,会将isAddNewNoteClicked
传递为true
。
状态正在顺利传递到Left
,但是我的问题是将isAddNewNoteClicked
从Left
传递到App
。 / p>
<App />
看起来像这样
class App extends Component {
constructor() {
super();
this.state = { isAddNewNoteClicked: false };
}
onNewNote = () => {
console.log('test');
}
testFunction(a) {
console.log('test', a);
}
render() {
return (
<main className="App">
<Left onNew={this.testFunction.bind(this)} />
<Right isAddNewNoteClicked={ this.state.isAddNewNoteClicked } />
</main>
);
}
}
编辑
所以我在this.props.onNewNote(this.state.isAddNewNoteClicked);
组件的onNewNote
函数中添加了<Left />
,现在正在调用该函数,但是''的状态没有被更新... >
编辑#2
我添加了变量本身而不是状态中的变量,而不是this.props.onNewNote(this.state.isAddNewNoteClicked);
。
答案 0 :(得分:1)
您的Left组件未调用通过App的prop传递给它的onNew函数。这部分
onNewNote = (isAddNewNoteClicked) => {
this.setState({ isAddNewNoteClicked });
}
仅会在您调用this.props.onNew()
之前为“左”设置状态。在左侧
onNewNote = (isAddNewNoteClicked) => {
this.setState({ isAddNewNoteClicked });
this.props.onNew(isAddNewNoteClicked); // Notice you calling it "onNew", not "onNewNote"
}
在应用上
testFunction(isAddNewNoteClicked) {
this.setState({ isAddNewNoteClicked })
}
答案 1 :(得分:0)
好的,所以添加这一行
this.props.onNewNote(isAddNewNoteClicked);
我的onNewNote()
上<Left />
函数上的已解决了该问题。
希望它对其他人有所帮助!
答案 2 :(得分:0)
为此,父级已将值作为道具发送给其子级。因此,我们可以通过props在子组件中得到它。
通过以下方式。
bibliography.bib