2017-06-15 154 views
1

我一直试图改变输入字段的值后,我从从SelectUI库选择项目,但我还没有成功,但就我搜索就可以了,我写的一切好像它应该是。更改输入字段的值 - 反应

这是我用来改变价值;

var element = ReactDOM.findDOMNode(this.refs._deviceId); 
    element.setAttribute('value', 'deneme'); 
    console.log(element); 

这是输入字段;

   <div className="form-group row"> 
       <label className="col-md-2 control-label">Device ID</label> 
       <div className="col-md-10"> 
        <input type="text" className="form-control" id="deviceId" placeholder="Device ID" ref="_deviceId" /> 
       </div> 
       </div> 

我安慰了元素变量后,我选择该项目,以检查一切正常,似乎是没有问题的。

这里是控制台日志;

正如你看到的,值放置成功,但在屏幕上,什么也没有发生输入字段。

+0

因为组件不被重新渲染>使用状态成员并将它传递给输入。你还需要监听输入的变化相应地更新您的状态 –

回答

2

设置了value属性后,需要重新渲染组件。才反应过来重新呈现的组件当它检测到的状态的变化。因此,与其使用状态可变

//Declare the state variable 

this.state = { 
    inputValue: '' 
}; 

//Use a lifecycle event or your own method to change the value of that state by using the setState method as- 

someMethod() { 
    this.setState({ 
     inputValue: 'deneme' 
    }); 
} 

//In HTML use the above state as- 
<input type="text" className="form-control" id="deviceId" placeholder="Device ID" ref="_deviceId" value={this.state.inputValue} /> 

记住使用的setState方法来改变状态,以便重新组成渲染才能进行。

OR

您可以拨打this.forceUpdate()强行重新呈现组件。