react ref的使用

Posted zhx119

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react ref的使用相关的知识,希望对你有一定的参考价值。

react虚拟dom如何通过ref来获取呢,看如下代码:

import React, Component, Fragment from ‘react‘;
import TodoItem from ‘./TodoItem‘;
class TodoList extends Component
constructor (props)

super (props);
this.state =
inputValue: ‘hello‘,
list: []



render ()

return (<Fragment>
<div><input
value=this.state.inputValue
onChange=
e => this.handleInput (e)
ref=(input) =>this.input = input //ref这里是一个函数通过这种方式获取相应的input标签
/>
<button onClick=
e => this.handleClick ()>提交
</button>
</div>
<ul ref=(ul) =>this.ul = ul>this.state.list.map ((item,
index) =>
return (<TodoItem item = item
index=index
key=index
deleteItem = () =>this.cancel()

/>)
)
</ul>

</Fragment>)


handleInput (e)

this.setState (
inputValue: this.input.value //以前获取input的value值是通过e.target.value来获取这里通过ref获取了相应的dom节点就可以这样写了
)


handleClick ()

let list = [];
list.push (this.state.inputValue);
this.setState (
list: [...this.state.list,this.state.inputValue],
inputValue:‘‘
,() =>
console.log(this.ul.querySelectorAll(‘div‘).length) //
this.setState 是异步函数,它还接收第二个参数,相当于回调函数,只不过这个参数是函数获取新生成的div的长度可以放在这个函数中执行相应的
代码,setState是异步的获取dom不及时总会少于1,通过在其回调函数中获取相应的dom

)

cancel(index)
const list = [...this.state.list];
list.splice(index,1);
this.setState(
list:list
)



export default TodoList
 
 

以上是关于react ref的使用的主要内容,如果未能解决你的问题,请参考以下文章

P17:React高级-ref 的用法和 ref 中的坑

React 中使用 Refs 改变样式是否很糟糕?

7React中的refs的使用

React自制全家桶React使用ref操作DOM与setState遇到的问题

react中input自动聚焦问题

React:使用 Refs 修复缺少的依赖警告 useEffect