电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

react-redux的connect與React.forwardRef結(jié)合ref失效的解決

瀏覽:192日期:2022-06-10 10:26:15
目錄
  • react-redux的connect與React.forwardRef結(jié)合ref失效
    • 原因
    • 解決辦法
  • dva/redux的connect 和useRef/forwardRef混用的問題
    • 解決方法
  • 總結(jié)

    react-redux的connect與React.forwardRef結(jié)合ref失效

    開發(fā)中遇到connect包裹forwardRef組件后,ref引用失效,返回undefined的問題。

    const CompA = React.forwardRef<OutputInterface, IProps>((props, ref) => {? // ...})export default connect(mapStateToProps, mapDispatchToProps)(CompA);

    原因

    源碼:React.forwardRef

    從下面截取的源碼中,可以看到forwardRef返回的是一個元素對象,包含了元素的類型REACT_FORWARD_REF_TYPE,以及渲染組件函數(shù)render方法,而connect需要的是組件,故透傳出現(xiàn)問題。

    import {REACT_FORWARD_REF_TYPE, REACT_MEMO_TYPE} from "shared/ReactSymbols";export function forwardRef<Props, ElementType: React$ElementType>(? render: (props: Props, ref: React$Ref<ElementType>) => React$Node,) {? // 省略邊界條件判斷? const elementType = {? ? $$typeof: REACT_FORWARD_REF_TYPE,? ? render,? };? if (__DEV__) {? ? let ownName;? ? Object.defineProperty(elementType, "displayName", {? ? ? enumerable: false,? ? ? configurable: true,? ? ? get: function() {? ? ? ? return ownName;? ? ? },? ? ? set: function(name) {? ? ? ? ownName = name;? ? ? ? if (!render.name && !render.displayName) {? ? ? ? ? render.displayName = name;? ? ? ? }? ? ? },? ? });? }? return elementType;}

    解決辦法

    方法一:調(diào)用forwardRef返回值中的render方法

    const CompA = React.forwardRef<OutputInterface, IProps>((props, ref) => {? // ...})// 直接通過render獲取渲染組件export default connect(mapStateToProps, mapDispatchToProps)(CompA.render);

    方法二:connect第4個參數(shù)可以設(shè)置{forwardRef: true}實(shí)現(xiàn)透傳

    const CompA = React.forwardRef<OutputInterface, IProps>((props, ref) => {? // ...})// 直接通過render獲取渲染組件export default connect(mapStateToProps, mapDispatchToProps, null, {? forwardRef: true})(CompA);

    dva/redux的connect 和useRef/forwardRef混用的問題

    因?yàn)橐鰐able 滾動條高度緩存,所以用了umi-plugin-keep-alive插件,導(dǎo)致被包裹的子組件useffect失效。

    故用父組件使用ref 調(diào)用子組件的getList方法實(shí)現(xiàn)頁面更新。 但是項(xiàng)目用的Dva,和useRef 一起用ref會失效。

    解決方法

    在connect 方法的第四個參數(shù)加 forwardRef: true,即可實(shí)現(xiàn)透傳效果,其余部分不變。

    其余部分用法不變。

    • 父組件:

    • 子組件:

    總結(jié)

    以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持。

    標(biāo)簽: JavaScript
    相關(guān)文章:
    主站蜘蛛池模板: 磁力反应釜,高压釜,实验室反应釜,高温高压反应釜-威海自控反应釜有限公司 | 破碎机_上海破碎机_破碎机设备_破碎机厂家-上海山卓重工机械有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 双能x射线骨密度检测仪_dxa骨密度仪_双能x线骨密度仪_品牌厂家【品源医疗】 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 全温恒温摇床-水浴气浴恒温摇床-光照恒温培养摇床-常州金坛精达仪器制造有限公司 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | 消防设施操作员考试报名时间,报名入口,报考条件 | 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 安徽净化工程设计_无尘净化车间工程_合肥净化实验室_安徽创世环境科技有限公司 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 香港新时代国际美容美发化妆美甲培训学校-26年培训经验,值得信赖! | 首页_中夏易经起名网| 超声骨密度仪-骨密度检测仪-经颅多普勒-tcd仪_南京科进实业有限公司 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | ★店家乐|服装销售管理软件|服装店收银系统|内衣店鞋店进销存软件|连锁店管理软件|收银软件手机版|会员管理系统-手机版,云版,App | 精密光学实验平台-红外粉末压片机模具-天津博君 | 龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司_龙门加工中心-数控龙门加工中心厂家价格-山东海特数控机床有限公司 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 免费B2B信息推广发布平台 - 推发网 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 |