【发布时间】:2018-10-26 12:44:23
【问题描述】:
尝试在父组件(名为 parent.js)中设置状态,并在文件“daySelect.js”中名为“Book”的子组件中选择日期,以删除预订详细信息。但是,得到一个错误,说我从孩子调用的函数(onUpdate)来更新父母的状态是“不是一个函数”:
父编码(parent.js):
class Parent extends Component {
// Setting the component's initial state
constructor(props) {
super(props);
this.state = {
date: "",
};
}
onUpdate = (dateChosen) => {
this.setState({
date: dateChosen
})
console.log(this.state.date);
};
render() {
return (
<div>
<Route exact path="/" component={Home} />
<Route exact path="/book" component={Book} onClick={this.onUpdate}/>
<Route exact path="/time" component={Time} />
<Route exact path="/form" component={Form} />
</div>
);
} }
子组件:
class Book extends Component {
// Setting the component's initial state
constructor(props) {
super(props);
}
onClick = (date) => {
var dateChosen = date[0];
// console.log(dateChosen);
this.props.onUpdate(date);
this.setState({date: dateChosen});
};
render() {
return (
<div>
<ReactWeeklyDayPicker mobilView={window.innerWidth < 100} format={'YYYY-MM-DD'} selectDay={this.onClick.bind(this)} />
</div>
);
}
export default Book;
【问题讨论】:
-
onUpdate = (dateChosen) => {应该是onUpdate(dateChosen) {。 -
我可以提个建议吗,.. React 很棒,但是使用状态会变得混乱。使用 React 的一种常见方法是使用
Single Source of Truth意识形态。 Redux 很受欢迎,但我觉得它太冗长了,所以我使用代理进行了我自己的状态管理。
标签: javascript reactjs