当前位置: 首页 > news >正文

做淘宝有哪些货源网站天津百度seo

做淘宝有哪些货源网站,天津百度seo,猎头公司和人力资源公司的区别,qq群网站推广目录 1,介绍2,类组件如何使用4,应用场景-高阶组件HOC 1,介绍 上篇文章中提到,ref 只能对类组件使用,不能对函数组件使用。 而 ref 转发可以对函数组件实现类似的功能。 使用举例: import Re…

目录

  • 1,介绍
  • 2,类组件如何使用
  • 4,应用场景-高阶组件HOC

1,介绍

上篇文章中提到,ref 只能对类组件使用,不能对函数组件使用。

ref 转发可以对函数组件实现类似的功能。

使用举例

import React, { Component } from "react";function CompA(props, ref) {return (<h1><div ref={ref}>组件A</div><span>{props.desc}</span></h1>);
}const NewCompA = React.forwardRef(CompA);export default class App extends Component {refA = React.createRef();componentDidMount() {console.log(this.refA);}render() {return <NewCompA ref={this.refA} desc="测试"></NewCompA>;}
}

打印结果

在这里插入图片描述

解释

通过 React.forwardRef() 来实现 ref 转发。其实就是通过 HOC:参数为组件,返回新组件。

特点:

  • 参数只能是函数组件,并且该函数接收2个参数
    • 参数一不变,依旧是 props
    • 参数二就是一个 ref: {current: null},也就是 React.forwardRef() 返回的新组件接收的 ref 属性。它让使用者来决定作为谁的引用。比如上面的例子中,就作为一个子元素的引用。
  • 返回的新组件,和原来的函数组件没有任何区别,只是可以传递 ref 属性了。

2,类组件如何使用

既然明确规定了 React.forwardRef() 的参数只能是函数,该函数的参数也是确定的,那可以将类组件包装一层来达到目的。

更改上面的例子如下:

class CompA extends Component {render() {return (<h1><div ref={this.props.forwardRef}>组件A</div><span>{this.props.desc}</span></h1>);}
}// forwardRef 这个属性名是随意的,只是约定俗成为这个单词了。
const NewCompA = React.forwardRef((props, ref) => {return <CompA {...props} forwardRef={ref}></CompA>;
});

4,应用场景-高阶组件HOC

在之前的高阶组件HOC中,有个问题没有解决:

const Alog = withLog(CompA)

此时使用的是 Alog 组件,那如何获取原组件 CompA 的方法和属性呢?
Alog 使用 ref 获取的并不是是 CompA 的组件实例。

可以使用 ref 转发解决:

源代码:

export default function withLog(Comp) {return class LogWrapper extends Component {componentDidMount() {console.log(`${Comp.name}组件被创建了`);}componentWillUnmount() {console.log(`${Comp.name}组件被销毁了`);}render() {return <Comp {...this.props} />;}};
}

修改后:

import React, { Component } from "react";export default function withLog(Comp) {class LogWrapper extends Component {componentDidMount() {console.log(`${Comp.name}组件被创建了`);}componentWillUnmount() {console.log(`${Comp.name}组件被销毁了`);}render() {const { forwardRef, ...rest } = this.props;return <Comp ref={forwardRef} {...rest} />;}}return React.forwardRef((props, ref) => {return <LogWrapper {...props} forwardRef={ref}></LogWrapper>;});
}

这样在使用 withLog 时,并不会影响对源组件 ref 的获取。


以上。

http://www.tj-hxxt.cn/news/49534.html

相关文章:

  • 松山湖仿做网站seo关键字优化教程
  • 自己做网站的流程seo网站诊断文档案例
  • 网站名词排名怎么做视频广告
  • dw建立网站之后怎么做各行业关键词
  • 外贸汽车网站制作腾讯新闻潍坊疫情
  • 网站关键词提高企业宣传ppt
  • 给企业做网站收入磁力天堂torrentkitty
  • 西宁微网站建设多少钱seopeix
  • 企业做网站多少钱软文推广文章
  • 事业单位网站模板网站目录扫描
  • 平顶山公司网站建设备案域名交易平台
  • 做网站及APP搜索到的相关信息
  • 网站建设公司国内技术最强临沂seo排名外包
  • 佛山建设工程信息网站新东方在线网上课程
  • 做网站栏目是什么意思网站首页排名
  • 如何查询一个网站是那家公司做的厦门seo网络优化公司
  • 辽宁住房建设厅网站新产品推广策划方案
  • 二手车网站模版售价seo技术培训岳阳
  • 软件下载平台凌哥seo技术博客
  • 代做课程设计的网站网址关键词查询网站
  • 凡科建站网中国疾控卫生应急服装
  • 餐饮公司企业网站源码seo分析及优化建议
  • 网站建设模板谷歌搜索引擎入口手机版
  • 商贸网站源码西地那非片吃了能延时多久
  • 网站功能的介绍正安县网站seo优化排名
  • 杭州做公司网站哪家好如何加入百度推广
  • 宣讲家网站两学一做google官网注册
  • 湛江网站建设方案咨询腾讯企点下载
  • 企业信息填报指南seo网站优化培训厂家报价
  • 祝贺网站改版企业网站免费制作