React Ref 是 React 提供的一种方式,允许我们访问 DOM 节点或者在 render 方法中创建的 React 元素,通常情况下,我们会避免直接操作 DOM,而选择使用 React 提供的状态(state)和属性(props)来更新视图,有些情况下,我们需要直接操作 DOM,这时候就需要使用 Refs。
在 TypeScript 中,我们可以使用 React.RefObject
import React, { useRef } from 'react'; function TextInputWithFocusButton() { const inputEl = useRef(null); const onButtonClick = () => { // current
属性会被初始化为存储在useRef
中的值 inputEl.current?.focus(); }; return ( <> > ); }
在这个例子中,我们使用 useRef
创建了一个 Ref,并将其存储在 inputEl
变量中,我们将这个 Ref 附加到 元素上,当用户点击按钮时,我们可以通过
inputEl.current
访问到这个元素,并调用 focus
方法使其获得焦点,需要注意的是,我们需要使用可选链操作符(?.
)来确保 current
属性存在,这是因为在某些情况下,例如组件卸载时,useRef
存储的值可能会被清除。
除了 useRef
,我们还可以使用 createRef
API 来创建一个 Ref,下面是一个例子:
import React, { useRef, createRef } from 'react'; function TextInputWithFocusButton() { const inputEl = createRef(); const onButtonClick = () => { inputEl.current?.focus(); }; return ( <> > ); }
在这个例子中,我们使用 createRef
创建了一个 Ref,并将其存储在 inputEl
变量中,我们将这个 Ref 附加到 元素上,当用户点击按钮时,我们可以通过
inputEl.current
访问到这个元素,并调用 focus
方法使其获得焦点,同样需要注意的是,我们需要使用可选链操作符来确保 current
属性存在。
我们可能需要在多个组件之间共享一个 Ref,为了实现这一点,我们可以将 Ref 作为 prop 传递给子组件,下面是一个例子:
import React, { useRef, forwardRef } from 'react'; const FancyTextInput = forwardRef((props, ref) => { return ; }); function App() { const inputEl = useRef (null); const handleButtonClick = () => { inputEl.current?.focus(); }; return ( ); }
在这个例子中,我们使用 forwardRef
API 创建了一个名为 FancyTextInput
的自定义组件,这个组件接受一个名为 ref
的 prop,并将其附加到内部的 元素上,我们在
App
组件中使用这个自定义组件,并将一个 Ref 作为 prop 传递给它,当用户点击按钮时,我们可以通过 inputEl.current
访问到这个元素,并调用 focus
方法使其获得焦点,需要注意的是,由于我们使用了 forwardRef
,所以我们不需要使用可选链操作符来确保 current
属性存在。
网站题目:ReactRefTypeScript用法
路径分享:http://www.csdahua.cn/qtweb/news29/365229.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网