ReactJS:无法在某些Web浏览器上键入输入字段

时间:2015-10-07 15:39:32

标签: javascript cross-browser reactjs

我正在创建一个包含多个输入场的React组件。 我在Mac上的iPad(Safari和Chrome)和Safari浏览器上遇到了问题。

我无法输入输入字段。

var InputComponent = React.createClass({
    getInitialState : function(){
        return {telephone : ''}
    },
    handleChange : function(event){
        console.log(event.target.value);
    },
    render : function(){
        return( 
              <div>
                    <label>Contact tel </label>
                    <input id="telephone" onChange={this.handleChange} defaultValue={this.state.telephone}/>
              </div>
        )
    }
})

我已经尝试了输入元素本身的几个变种而没有任何运气。

1 个答案:

答案 0 :(得分:0)

您需要通过在句柄更改中设置状态来关闭更新循环。因为react维护自己的虚拟DOM,所以您希望做出改变而不是标准浏览器。

var InputComponent = React.createClass({
   getInitialState : function(){
       return {telephone : ''}
   },
   handleChange : function(event){
       this.setState({
           telephone: event.target.value
       })
   },
   render : function(){

       return( 
            <div>
                <label>Contact tel </label>
                <input id="telephone" onChange={this.handleChange} value={this.state.telephone}/>
            </div>
         )
   }
})

另外,我认为你想使用value道具,而不是defaultValue