在 React 中,如何将输入值传递给回调函数?

In React, how do I pass input value to callback function?

每当输入值发生变化时,我想在 React 组件中调用一些回调。

简化示例应说明:

jsx 文件中:

<input onKeyDown={this.props.changeCallback( VALUE_OF_INPUT )} ></input>

VALUE_OF_INPUT 应该是什么?

谢谢!

<input value={this.state.value} onKeyDown={this.props.changeCallback.bind( this, this.state.value)} ></input>

会做这份工作。

没有太多关于 React 的内容。使用传递给回调的 event 作为第一个参数:

onKeyDown={event => this.props.changeCallback(event.target.value)}

此方法(使用 fat arrow function)还处理绑定 this,但每次渲染都会创建一个新的匿名函数。请注意,调用 bind 本质上做同样的事情,所以这是我在两者中的首选。

重要的是要区分将函数分配给 onKeyDown 属性(如此处所做的那样)和 调用 函数(您所做的)。

另一种实现动态的方法是给它一个值回调,如果从某个变量预填充 "value",这种方法效果很好。

/* Better function for larger forms */
handleChange = (event) =>  {
    var name = event.target.name;
    var value =  event.target.value;
    this.setState({[name]: value});
}
/* set Default and callback to state */
valueCallback = (value, name) => {
    if (this.state[name]) {
        return this.state[name]
    }
    else {
        return value;
    }
}

那你可以去...

 var defaut = '1234'; // or this.props.something.something;

 <input type={type} name={name} value={this.valueCallback(defaut, name)}  onChange={this.handleChange} />