React的ref的使用

例一:获取输入框输入的信息,代替e.target.value

<div>
          <label htmlFor='addService'>项目名称</label>
          <input 
                id='addService' 
                ref={(input)=>{this.input=input}}
                className='input' 
                value={this.state.inputValue} 
                onChange={this.inputChange.bind(this)} /> 
         <button onClick={this.addItem.bind(this)}> 添加项目</button>
</div> inputChange(e){ console.log(e.target.value); this.setState({ // inputValue: e.target.value // 第一种写法 inputValue: this.input.value // ref写法 }) }

例二:获取文档中某DOM节点的所有元素

<ul ref={(ul)=>{this.ul = ul}}>
        {
            this.state.list.map((item,index)=>{
                  return (
                     <Item content={item} 
                           key={index+item}
                           index={index}
                           deleteItem={this.deleteItem.bind(this)}
                             />
                    )
             })
      }
 </ul> 
addItem(){
// this.setState是异步加载的,ul下边的li动态加载以后,需要用this.setState的回调函数里去统计所有元素
this.setState({ list: [...this.state.list,this.state.inputValue], inputValue: '' },()=>{ console.log(this.ul.querySelectorAll('li').length,'1111') }) console.log(this.ul.querySelectorAll('li').length,'2222') // 在这打印是错误的数据,需要在this.setState的回调函数里打印 }

 

posted @ 2019-11-19 14:51  林玖女神  阅读(193)  评论(0编辑  收藏  举报