假设我们有一个输入字段:
<input type="text" ref="inputBrand" onChange={this.updateState} />
当调用updateState
函数时,是否可以在不引用ref
的情况下知道调用哪个元素?
updateState: function() {
console.log(inputValue???);
},
我想在没有引用ref的情况下这样做的原因是我将有多个输入字段。
如果上述情况不可能 - 是否可以直接在函数调用中传递ref
?
这样的事情:
<input type="text" ref="inputBrand" onChange={this.updateState(--this ref--)} />
答案 0 :(得分:3)
您可以获取输入名称&amp;来自SyntheticEvent
param的输入值,该值传递给React中的所有事件处理程序。
updateState: function(e){
this.setState({[e.target.name] : e.target.value}, () => console.log(this.state))
},
render: function() {
return <div>
<input type="text" name="a" onChange={this.updateState} />
<input type="text" name="b" onChange={this.updateState} />
</div>;
}
答案 1 :(得分:2)
updateState: function(e) {
console.log(e.target.value);
},
如果触发它,事件参数e.target
将指向DOM元素。
答案 2 :(得分:1)
使用事件处理程序并为每个组件分配id
而不是ref,并通过函数
e.target.id
访问它
var MyComponent = React.createClass({
updateState: function(e){
console.log(e.target.id);
},
render: function() {
return <div>
<input type="text" id="first_input" onChange={this.updateState} />
<input type="text" id="second_input" onChange={this.updateState} />
</div>;
}
});
ReactDOM.render(
<MyComponent name="World" />,
document.getElementById('container')
);
<强> JSFIDDLE 强>