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

奎屯建设局网站网站开发模合同

奎屯建设局网站,网站开发模合同,软件开发项目预算,临平房产做网站的公司useRef、useForwardRef 和 useImperativeHandle 是 React 中用于处理引用(refs)的三个不同 Hook,它们的用途和应用场景有明显区别: 1. useRef 用途:创建一个可变的 ref 对象,用于存储不需要触发渲染的变量…

useRefuseForwardRef 和 useImperativeHandle 是 React 中用于处理引用(refs)的三个不同 Hook,它们的用途和应用场景有明显区别:

1. useRef

  • 用途:创建一个可变的 ref 对象,用于存储不需要触发渲染的变量(如 DOM 节点、定时器 ID、任意值)。
  • 特点
    • 不触发重新渲染:修改 .current 属性不会触发组件更新。
    • 跨渲染周期保留值:每次渲染时返回同一个 ref 对象。
  • 示例

    jsx

    function TextInput() {const inputRef = useRef(null);const focusInput = () => {inputRef.current.focus(); // 访问 DOM 节点};return (<div><input ref={inputRef} type="text" /><button onClick={focusInput}>聚焦输入框</button></div>);
    }
    

2. forwardRef

  • 用途:将 ref 从父组件传递到子组件的内部元素(通常是 DOM 节点),突破组件封装。
  • 特点
    • 函数组件默认不接收 ref,需用 forwardRef 包裹才能接收。
    • 常用于自定义组件(如封装 Input、Button 等)。
  • 示例

    jsx

    // 子组件:使用 forwardRef 接收 ref
    const CustomInput = forwardRef((props, ref) => {return <input ref={ref} {...props} />;
    });// 父组件:传递 ref
    function Parent() {const inputRef = useRef(null);const focusInput = () => {inputRef.current.focus(); // 直接访问 CustomInput 内部的 input};return (<div><CustomInput ref={inputRef} /><button onClick={focusInput}>聚焦</button></div>);
    }
    

3. useImperativeHandle

  • 用途:与 forwardRef 配合使用,自定义暴露给父组件的 ref 内容(例如,只暴露特定方法而非整个 DOM 节点)。
  • 特点
    • 控制 ref 的暴露内容:可以隐藏内部实现细节,只暴露需要的方法或属性。
    • 提高封装性:避免直接暴露 DOM 节点。
  • 示例

    jsx

    // 子组件:自定义暴露的 ref 内容
    const CustomInput = forwardRef((props, ref) => {const inputRef = useRef(null);useImperativeHandle(ref, () => ({focus: () => {inputRef.current.focus();},clear: () => {inputRef.current.value = '';}}));return <input ref={inputRef} {...props} />;
    });// 父组件:只能访问子组件暴露的方法
    function Parent() {const inputRef = useRef(null);const handleFocus = () => {inputRef.current.focus(); // 可用// inputRef.current.value = 'xxx'; // 不可用,未暴露};return (<div><CustomInput ref={inputRef} /><button onClick={handleFocus}>聚焦</button></div>);
    }
    

总结对比

Hook主要用途是否与子组件通信暴露内容
useRef存储 DOM 节点或可变值,不触发渲染整个 ref 对象或 DOM 节点
forwardRef将父组件的 ref 传递到子组件内部的 DOM 节点完整的 DOM 节点
useImperativeHandle与 forwardRef 配合,自定义暴露给父组件的内容(如特定方法)自定义的方法或属性

使用场景建议

  • useRef:内部管理 DOM 或状态(如定时器、表单值)。
  • forwardRef:封装可复用组件,需要父组件直接操作内部 DOM。
  • useImperativeHandle:限制父组件对 ref 的访问,暴露有限的 API(如只允许调用 focus())。
http://www.dtcms.com/wzjs/545796.html

相关文章:

  • 哪些网站做外贸效果好网站公司策划书
  • 网站开发提供源代码单页面网站制作视频
  • 怎样查询网站的备案号手表网站 云
  • 硬件开发网站网络服务无法启动
  • 龙山网站建设设计工作室经营范围
  • 上海福州路附近做网站的公司wordpress 分类目录 层级
  • 中山市建网站公司平台开发是做什么的
  • 成都建设网站分享seo做得比较好的公司
  • 我的世界自己做披风网站做网站需要学php哪些技术
  • 上海网站备案在哪里查询黑龙江人事考试网
  • 简述商务网站建设网站建设模板是什么意思
  • 南宁网站建设nnit30建筑设计自学网
  • 可以自己做网站这么做织梦源码模板下载商城网站模板 整站带栏目高端大气上档次含数据
  • 深圳市专业网站建设虚拟主机怎么做淘客网站
  • 以网站建设专业画一幅画做装修网站多少钱
  • 番禺网站建设策划国外优秀设计公司网站
  • 永兴城乡住房建设部网站齐河县工程建设监理有限公司网站
  • 百度云 做视频网站网站建设安全服务协议
  • 南昌购物网站制作网站建设服务商城
  • 采购网站模板营销型网站建设教程视频教程
  • 建设部网站施工合同范本去哪找上海网站备案咨询
  • 上海做手机网站建设济南最好的网站开发
  • 建设银行网站用什么字体国内网站设计案例欣赏
  • 做校园网站济南万速网站建设
  • 网站转换率八年级上册信息书怎么做网站
  • 在线手机动画网站模板下载安装购物网站下载
  • 网站建设一般都需要什么资质河间网站
  • 免费网站建设策划网站制作建设需求
  • ip对网站作用j2ee大型网站开发框架
  • 重庆定制网站建设公司成都网站建设企业 排名