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
 
 

原文地址:https://www.cnblogs.com/zhx119/p/11023624.html

时间: 2024-10-08 11:56:30

react ref的使用的相关文章

React Ref 和 React forwardRef

Ref 和Dom,Ref是reference(引用)的简写. 能力:大多数情况下,props前递可以解决一切问题,但是依然有需要触达React实例或者Dom节点的情况,这时候应该使用React Ref. 使用: 用来处理立即执行的动画. 用来处理非受控组件的焦点,什么是受控/非受控组件参考文章. 用来与第三方库对接,我知道的有d3 或者 cocos. React.forwardRef((props,ref)=><Compnent>) 简而言之就是自动透传引用(Ref),能让组件接收传过来

[React] Use React ref to Get a Reference to Specific Components

When you are using React components you need to be able to access specific references to individual component instances. This is done by defining a ref. This lesson will introduce us to some of the nuances when using ref. <input ref="b" type=

ReactJS学习系列课程(React ref的使用)

在我学习React的过程当中,总会被一些名词搞得晕头转向,但是细想起来又非常简单,比如react定义的这个refs,其实就是用于获取dom的一种方式. 在React中组件并不是真实的 DOM 节点,而是存在于内存之中的一种数据结构,叫做虚拟 DOM (virtual DOM).只有当它插入文档以后,才会变成真实的 DOM .根据 React 的设计,所有的 DOM 变动,都先在虚拟 DOM 上发生,然后再将实际发生变动的部分,反映在真实 DOM上,这种算法叫做 DOM diff ,它可以极大提高

React ref

React 组件在 加载时将 DOM 元素传入 ref 的回调函数,在卸载时则会传入 null.ref 回调会在componentDidMount 或 componentDidUpdate 这些生命周期回调之前执行. 当 ref 属性用于使用 class 声明的自定义组件时,ref 的回调接收的是已经加载的 React 实例. Refs 与函数式组件 你不能在函数式组件上使用 ref 属性,因为它们没有实例 ps: 可以在函数式组件内部使用 ref,只要它指向一个 DOM 元素或者 class

React ref回调函数例子

ref属性也可以是一个回调函数而不是一个名字.   这个函数将要在组件被挂载之后立即执行. 这个参照的组件将会作为该函数的参数,这个函数可以立即使用这个组件参数,当然也可以将其保存供以后使用. 当这个参照组件被卸载并且这个ref改变的时候,先前的ref的参数值将为null.这将有效的防止了内存的泄露. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">

从 0 到 1 实现 React 系列 —— 4.setState优化和ref的实现

看源码一个痛处是会陷进理不顺主干的困局中,本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/setState/ref/...) 从 0 到 1 实现 React 系列 -- JSX 和 Virtual DOM 从 0 到 1 实现 React 系列 -- 组件和 state|props 从 0 到 1 实现 React 系列 -- 生命周期和 diff 算法 从 0 到 1 实现 React 系列 -- 优化 set

React之ref详细用法

在react典型的数据流中,props传递是父子组件交互的唯一方式:通过传递一个新的props值来使子组件重新re-render,从而达到父子组件通信.当然,就像react官网所描述的一样,在react典型的数据量之外,某些情况下(例如和第三方的dom库整合,或者某个dom元素focus等)为了修改子组件我们可能需要另一种方式,这就是ref方式. ref 简介 React提供的这个ref属性,表示为对组件真正实例的引用,其实就是ReactDOM.render()返回的组件实例:需要区分一下,Re

react native 中View组件中的ref属性是什么

在用Reactnative写工程时,默认奇妙的有一种像OC中,或者Java 中或者当前类的私有属性的想法,state 和props都不能满足时,就是ref   它能达到其他语言中持有一个view组件,并且局部的刷新 ref 接受值为string类型的参数或者一个函数function callback.这一特性让开发者对ref的使用更加灵活. render() { return <TextInput ref={(c) => this._input = c} />; }, component

react.js 给标识ref,获取内容

import React,{Component} from 'react' import ReactDOM from 'react-dom' class App extends Component{ //给一个初始化状态 constructor(){ super(); this.state={ result:0 } } handChange=()=>{ //获取input a的类容,这个a就是我们给的标识ref="a" let a=this.refs.a.value||0; le