内容简介:在函数组件中要获取子组件的数据,需要两步骤1.将上面的方式都会将组件中全部的数据暴露出去,有时候我们想只想暴露出一部分数据
-
1、定义父组件(直接使用
ref
)export default class UserRef1 extends Component { constructor(props) { super(props); this.child = React.createRef(); } focus = () => { console.log(this.child.current.inputRef.current.value); this.child.current.inputRef.current.focus(); } render() { return ( <div> <Child ref={this.child} /> <button onClick={this.focus}>获取焦点</button> </div> ) } } 复制代码
-
2、子组件中
class Child extends Component { constructor(props) { super(props); this.state = { name: '哈哈' } this.inputRef = React.createRef(); } render() { return ( <input type="text" value={this.state.name} onChange={(e) => this.setState(e.target.value)} ref={this.inputRef} /> ) } } 复制代码
二、函数组件
在函数组件中要获取子组件的数据,需要两步骤1.将 ref
传递到子组件中,2.需要使用 forwardRef
对子组件进行包装
-
1、父组件
export default () => { const parentRef = useRef(); function focusHander() { console.log(parentRef); parentRef.current.focus(); parentRef.current.value = '哈哈'; } return ( <> <ForwardChild ref={parentRef} /> <button onClick={focusHander}>获取焦点</button> </> ) } 复制代码
-
2、子组件中
function Child(props, parentRef) { console.log(props); return ( <> <input type="text" ref={parentRef} /> </> ) } /** * 使用forwardRef将ref直接传递进去 */ let ForwardChild = forwardRef(Child); 复制代码
三、优化
上面的方式都会将组件中全部的数据暴露出去,有时候我们想只想暴露出一部分数据
-
1、子组件的代码
import React, { useState, useRef, useImperativeHandle, forwardRef } from 'react' function Child(props, parentRef) { const inputRef = useRef(); useImperativeHandle(parentRef, () => { // return返回的值就可以被父组件获取到 return { focus() { inputRef.current.focus(); } } }) return ( <> <p>{props.name}</p> <input type="text" ref={inputRef} /> </> ) } let ForwardChidl = forwardRef(Child); 复制代码
-
2、父组件的代码
export default () => { const parentRef = useRef(); const focusHandler = () => { parentRef.current.focus(); } return ( <> <ForwardChidl ref={parentRef} name={'你好'} /> <button onClick={focusHandler}>获取焦点</button> </> ) } 复制代码
以上所述就是小编给大家介绍的《React16.8中父组件获取子组件数据的3中方式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- React 穿透获取被高级组件装饰的目标组件实例
- android获取应用四大组件列表以及详细信息
- vue组件props传值,对象获取不到的问题
- 设计稿生成代码核心技术揭秘:获取图片中前端组件的位置信息
- UWeb v1.5.4 专业版发布,完善字典组件,实现动态获取
- UWeb v1.6.2 专业版发布,增强框架字典组件,根据标识动态获取数据源
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
创业就是要细分垄断
李开复、汪华、傅盛 / 文化发展出版社 / 2017-5-1 / CNY 45.00
对各方面资源极为有限的创业公司而言,想在激烈的市场竞争中站立下来的第一步是:成为细分市场的垄断者。不管是资本还是尖端人才,追逐的永远是行业里尖端的企业,第二名毫无意义。 首先,要精准定位潜在市场。这个市场的需求仍没有被满足,并且潜力巨大。其次,抓住时代和行业的红利,通过高速增长实现“小垄断”,抢滩登陆。最后,在细分领域里建立起自己的竞争壁垒,应对巨头和竞争对手的复制,去扩展更大的市场,从而扩......一起来看看 《创业就是要细分垄断》 这本书的介绍吧!