【发布时间】:2016-10-14 04:33:06
【问题描述】:
我有一个非常简单的应用程序,我正在尝试从子组件更新父组件的状态,如下所示:
import React from '../../../../../../../dependencies/node_modules/react';
import ReactDOM from '../../../../../../../dependencies/node_modules/react-dom';
class CalendarMain extends React.Component {
constructor() {
super();
}
handleClick() {
this.props.handleStateClick("State Changed");
}
render() {
return (
<div>
<div className="calendar">
{this.props.checkIn}
<button onClick={ this.handleClick.bind(this) }>Click Me</button>
</div>
</div>
)
}
}
class CalendarApp extends React.Component {
constructor() {
super();
this.state = {
checkIn: "Check-in",
checkOut: "Check-out",
dateSelected: false
};
}
handleStateClick( newState ) {
this.setState({
checkIn: newState
});
}
render() {
return (
<div>
<CalendarMain
checkIn = { this.state.checkIn }
handleStateClick = { this.handleStateClick.bind(this) }
/>
</div>
);
}
}
我收到的错误是this.setState is not a function,我不知道为什么。任何帮助将不胜感激!
【问题讨论】:
-
确保您不会在其他地方意外地改变
this.setState。即:this.setState = { foo: 'bar' }; -
只要注意到
../../..... 确保相对路径保留在您的项目中,否则移动项目(上传到远程、在 github/npm 上发布等)可能会破坏这些路径。 -
您可能需要重新考虑您的项目层次结构
-
您导入 React 的方式非常……令人失望。
-
它实际上适用于最新版本的 React:jsfiddle.net/1uh9e8wx
标签: javascript reactjs ecmascript-6 state