我建立使用反应和材料UI一个简单的应用程序Reactjs材料UI状态不定事件
主要成分
'use strict';
import React from 'react';
import ProjectList from './projectlist';
export default class Application extends React.Component {
constructor(props) {
super(props);
}
changeProject() {
}
render() {
return <div className="row">
<div className="col s3">
<ProjectList
onProjectChangeEvent={this.changeProject}/>
</div>
</div>;
}
}
ProjectList组件
'use strict';
import React from 'react';
import Card from 'material-ui/lib/card/card';
import CardHeader from 'material-ui/lib/card/card-header';
import CardText from 'material-ui/lib/card/card-text';
import FlatButton from 'material-ui/lib/flat-button';
import CardActions from 'material-ui/lib/card/card-actions';
// FIXME: Remove when react1.0 is launched
import injectTapEventPlugin from 'react-tap-event-plugin';
injectTapEventPlugin();
export default class ProjectList extends React.Component {
constructor(props) {
super(props);
this.state = {
data: props.data || [],
changeEvent: props.onProjectChangeEvent
};
}
componentDidMount() {
}
openEdit =() => {
console.debug(this.state);
}
render() {
return <Card>
<CardHeader
title="Super Project Title"
subtitle="Super Project Subtitle"/>
<CardText>
Something important
</CardText>
<CardActions>
<FlatButton
label="Edit"
onTouchTap={this.openEdit}/>
</CardActions>
</Card>;
}
}
当我点击FlatButton ,console.debug(this.state)== undefined?我如何与ProjectList组件中的应用程序组件通信?我想将项目对象发送回应用程序。在构造函数中存在道具,componentDidMount也是如此。但是如果它没有定义的话。怎么来的?
更新 添加通过@ taylorc93建议的改变让我在控制台
Uncaught (in promise) Error: http://localhost:3000/app/components/projectlist.js: Unexpected token (31:13)
29 | }
30 |
> 31 | openEdit =() => {
| ^
32 | console.debug(this.state);
33 | }
谢谢,我试过,但现在我得到在控制台中的错误,我已经更新后 –
对不起,忘了在类属性初始化是ES7功能。如果你仍然想使用它(我发现它更清洁),你可以在你的编译器中启用它。如果你使用的是babel,这意味着启用阶段0的提议 – taylorc93