工作中不免遇到各种
react版本,
获取dom元素/值是常见需求。所以今天针对目前的几个版本点提供不同的解决方案。欢迎留言讨论补充。感谢 ^ _ ^
针对多个
react版本 - 父
组件获取子
组件的dom元素/值
React 16.3版本以上第一、子
组件非公用
组件,使用createRef实现第一、子
组件公用
组件,使用forwardRef实现
React 16.3版本以下第一、子
组件非公用
组件,使用createRef实现第一、子
组件公用
组件,使用forwardRef实现
React 16.3版本以上
分两种情况:
先来说下从哪获取的启发,想要从父组件获取子组件的值或方法。。。
一次写代码的时候,用 Antd 中的 Modal 包裹了一个子组件,子组件中包含 input 输入框,想要在点击对话框上面确定按钮时(即Modal 自带的 onOk方法),拿到其中输入的值,,,,
下面用一个父组件(Father.js)和子组件(Hearder.js)来演示如何能拿到值和方法:
给子组件添加属性 ref=‘footer’
<Header ref='footer'></Header>
然后在父组
import React, {Component} from 'react';
export default class Parent extends Component {
render() {
return(
<Child onRef={this.onRef} /&g...
最好连接上一篇文章一起查看,能更好的理解该文章:
react生命周期函数执行过程:
https://editor.csdn.net/md?not_checkout=1&articleId=109010693
1、constructor(props)
React组件的构造函数在挂载之前被调用。在实现React.Component构造函数时,需要先在添加其他内容前,调用super(props),用来将父组件传来的props绑定到这个类中,使用this.props将会得到。
官方建议不要在construc
使用场景:需要重复触发子组件弹窗或者需要在子组件修改值的时候可以采用调用子组件身上特定方法执行操作。
在次介绍一下最新hooks的操作和旧版本class组件调用方式
一.Hooks api调用方式
需要用到的Api:useRef useImperativeHandle forwardRef
简单说明:
1.useRef: 用于获取元素的原生DOM或者获取自定义组件所暴露出来的ref方法(父组件可以通过ref获取子组件,并调用相对应子组件中的方法)
2.useImperativeHandle:在函数式组件中,
this.forceUpdate();
<div className={classnames("bottom grade", { auto: tableData[i][val.enName+'hide']&&tableData[i][val.enName+'hide'] == 2 })}>
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/element-ui@2.12.0/lib/index.js"></script>
<div id="app">
<el-tree :data="data...