es6类和反应组件方法

时间:2016-12-08 08:32:31

标签: javascript reactjs ecmascript-6 components

我正在使用反应组件和es6。 我应该如何将onChange方法中的逻辑用于其他方法?

render() {
    let input;
    return (
<tr>  <input 
        ref = {node => { input = node; }} 
        onChange = { event => {
            if (input.value === this.props.word.pl) 
                event.currentTarget.style.backgroundColor = 'Chartreuse';
            else if (input.value !== this.props.word.pl)
                event.currentTarget.style.backgroundColor = 'LightCoral';
            else if (input.value === "")
                event.currentTarget.style.backgroundColor = 'none';
            }
        }/>

2 个答案:

答案 0 :(得分:3)

  1. 在组件级别上移出您的功能

  2. 在构造函数

  3. 中绑定它
  4. 在多个onChange事件

  5. 上使用它
    class MyComponent extends React.Component {
      constructor(props) {
        super(props);
    
        // bind this
        this.handleChange = this.handleChange.bind(this);
      }
    
      // reusable function
      handleChange(e) {
        // ... your logic for onChange here
      }
    
      render() { 
        return (
          <div>
            <input onChange={this.handleChange} />
            <input onChange={this.handleChange} />
          </div>
        );
      }
    };
    

    详细了解React表单here

答案 1 :(得分:2)

Leo,给出了一个如何在构造函数中绑定方法的示例。但是我将再举一个例子,说明如何避免在构造函数中绑定。

箭头函数语法

handleChange = e => { ... }