• 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的回调函数里打印 }
  • 相关阅读:
    FastCgi与PHP-fpm之间是个什么样的关系
    MySql的like语句中的通配符:百分号、下划线和escape
    mysql将int 时间类型格式化
    navicat 结合快捷键
    MySQL中concat函数
    case when then else end 用法
    PhpStorm主题
    Having与Where的区别
    无需图形界面环境下的浏览器
    Socket常见错误
  • 原文地址:https://www.cnblogs.com/linjiu0505/p/11889455.html
Copyright © 2020-2023  润新知