Ran*_*iev 5 javascript ecmascript-6 reactjs
我想尽可能地为我的小项目使用ES6(ES2015).现在我想使用React的箭头函数.
// What I want
let Text = React.createClass({
    componentDidMount: () => {
        setInterval(this.updateCurrentTime, 1000);
    }
}
// What I have
let Paragraph = React.createClass({
    render: () => (<div className="MySuperTable"><Text name="Dodo" startDate={(new Date()).toString()} /></div>)
});
let Text = React.createClass({
    getInitialState: function () {
        return {
            currentTime: (new Date()).toString()
        }
    },
    componentDidMount: function () {
        setInterval(this.updateCurrentTime, 1000);
    },
    updateCurrentTime: function () {
        this.setState({
            currentTime: (new Date()).toString()
        });
    },
    render: function () {
        return (
            <div>
                <span>Hello my name is {this.props.name}</span>
                <span>And I was born on {this.props.startDate}</span>
                <span>And I now it's {this.state.currentTime}</span>
            </div>
        );
    }
});
ReactDOM.render(
    <Paragraph/>,
    document.getElementById('container')
);
this,对象会被传递给createClass自己,这是正确的吗?Text实例?提前致谢.
您可以ES2015像这样更改代码
class Text extends React.Component {
  constructor() {
    super();
    this.state = { currentTime: (new Date()).toString() };
  }
  componentDidMount() {
    setInterval(() => this.updateCurrentTime(), 1000);
  }
  updateCurrentTime() {
    this.setState({
      currentTime: (new Date()).toString()
    });
  }
  render() {
    return <div>
      <span>Hello my name is { this.props.name }</span>
      <span>And i was born { this.props.startDate }</span>
      <span>And i now it's { this.state.currentTime }</span>
    </div>  
  }
};
let Paragraph = () => {
  return <div className="MySuperTable">
    <Text name="Dodo" startDate={ (new Date()).toString() } />
  </div>
};
| 归档时间: | 
 | 
| 查看次数: | 4046 次 | 
| 最近记录: |