javascript - 如何在 React.createClass 中使用箭头函数

标签 javascript reactjs ecmascript-6

我想在我的小项目中尽可能使用 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')
);
  1. 我需要做什么才能使它正常工作?
  2. 据我了解,this 将是传递给 createClass 本身的对象,是否正确?
  3. 如何将它绑定(bind)到 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>
};

Example

React - Reusable Components

关于javascript - 如何在 React.createClass 中使用箭头函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36080354/

相关文章:

javascript - 避免重复的代码并提取此功能

javascript - 在 Webstorm IDE 上部署 Meteor

javascript - 如何在 JavaScript 字符串中编译 Ember Action ?

javascript - 改变? : (ValueType, ActionMeta) => void,与 OptionType 不兼容

node.js - 上传文件时: CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

javascript - `Array.from({length: 5}, (v, i) => i)` 是如何工作的?

javascript - 无法在 jQuery 中获取属性、句点

javascript - 在 NodeList.connect() 注册的事件内部,如何获取对触发节点的引用?

javascript - 为什么在提交帖子请求时我的图片会转换为字符串?

javascript - 如何按值排序并仅返回高于特定值的项目?