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

网站流量超沈阳网页设计兼职

网站流量超,沈阳网页设计兼职,常州百度推广排名优化,帝国系统怎样做网站地图forwardRef 【写在前面】 ​ 1、ref 的作用是获取实例,但由于函数组件不存在实例,因此无法通过 ref 获取函数组件的实例引用,而 React.forwardRef 就是用来解决这个问题的。 ​ 2、React.forwardRef 会创建一个 React 组件,这个组…

forwardRef

【写在前面】

​ 1、ref 的作用是获取实例,但由于函数组件不存在实例,因此无法通过 ref 获取函数组件的实例引用,而 React.forwardRef 就是用来解决这个问题的。

​ 2、React.forwardRef 会创建一个 React 组件,这个组件能够将其接收到的 ref 属性转发到自己的组件树。

1. 无法直接使用 ref 引用函数式组件

在下面的例子中,父组件 Father 想通过 ref 引用子组件 Child,此时代码会报错,因为函数式组件没有实例对象,无法被直接引用:

// 父组件
export const Father: React.FC = () => {const childRef = useRef()return (<><h1>Father 父组件</h1><hr /><!-- 下面这行代码中的 ref 使用不正确,因为 Child 组件是函数式组件,无法被直接引用 --><Child ref={childRef} /></>)
}

Child 组件的定义如下:

// 子组件(实现点击按钮,数值加减的操作)
const Child: React.FC = () => {const [count, setCount] = useState(0)const add = (step: number) => {setCount((prev) => (prev += step))}return (<><h3>Child 子组件 {count}</h3><button onClick={() => add(-1)}>-1</button><button onClick={() => add(1)}>+1</button></>)
}

注意:上面的代码无法正常运行,会在终端提示如下的 Warning 警告:

Warning:
Function components cannot be given refs. Attempts to access this ref will fail.
Did you mean to use React.forwardRef()?

错误提示中有解决此问题的关键提示:Did you mean to use React.forwardRef()?

2. forwardRef 的基本使用

在使用函数组件时,我们无法直接使用 ref 引用函数式组件,下面的代码会产生报错:

const childRef = useRef(null) 
return <Child ref={inputRef} />

因为默认情况下,你自己的组件不会暴露它们内部 DOM 节点的 ref。

正确的方法是使用 React.forwardRef() 把函数式组件包装起来

例如 Child 子组件的代码如下:

// 被包装的函数式组件,第一个参数是 props,第二个参数是转发过来的 ref
const Child = React.forwardRef((props, ref) => {// 省略子组件内部的具体实现
}) 

然后,在父组件 Father 中,就可以给子组件 Child 绑定 ref 了:

// 父组件
export const Father: React.FC = () => {const childRef = useRef()// 按钮的点击事件处理函数const onShowRef = () => {console.log(childRef.current)}return (<><h1>Father 父组件</h1>{/* 点击按钮,打印 ref 的值 */}<button onClick={onShowRef}>show Ref</button><hr /><Child ref={childRef} /></>)
}

注意:此时父组件 Father 中获取到的 ref.current 是 undefined,因为子组件 Child 没有向外暴露任何自己内部的东西。

http://www.yayakq.cn/news/104871/

相关文章:

  • 长春站建筑html5网站怎么建设后台怎么弄
  • 网络推广引流软件seo线上培训机构
  • 百度广告联盟平台seo搜索引擎营销工具
  • 做的新网站能用多久信阳专业网站建设
  • 网站蜘蛛怎么看微信商城怎么开店
  • 网站建设分析案例化妆品网络营销方案
  • 软件公司网站做微商的网站
  • 做数据新闻的网站有哪些方面Wordpress标签与分类
  • 耐克官网网站设计素马设计顾问讲解价格
  • 广州天河 网站建设建设厅的证全国通用吗
  • 影响网站排名原因邯郸网站建设兼职
  • 网站建设实例大制作wordpress每次都要ftp
  • 网站编程代码大全关键词seo排名
  • 企业年金怎么缴纳seo搜索推广费用多少
  • 福建省建设继续教育网站网红营销的优势
  • 那里网站建设好建站模板免费
  • 个人可以备案几个网站南宁网页设计培训学校
  • 凡科网站模板下载html5制作的网站
  • 电子商务公司建设网站方案设计辽宁建设工程信息网联合体投标
  • 哪个购物网站最便宜wordpress完整虚拟资源下载
  • 网站对联广告html代码wordpress oou
  • 做创意ppt网站有哪些方面织梦网站如何打通百度小程序
  • 企业公司网站建设ppt做网站的公司什么动力
  • 薛华成 旅游网站建设百度网站怎么做友情链接
  • 在线网站推荐几个微商分销平台
  • 廊坊网站制作套餐做那种类型的网站seo好
  • 什么是企业网站pv英文网站建设比较好
  • 建站兔软件下载本地升级wordpress
  • 沧州网站建设 3tseo黑龙江建设网官网住房和城乡厅官网
  • 做律师咨询网站网站制作品牌公司