游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

useEffect依赖项中的全局范围变量?

  像‘window。location。pathname’这样的外部范围值不是有效的依赖项,因为改变它们不会重新渲染组件。用例
  假设我们必须在每个页面上执行一个操作,并且每当路由更改时我们都必须执行此操作。
  由于我们必须在每个页面组件上执行操作,所以让我们将逻辑抽象为一个钩子。文件
  index。js文件包含具有两个页面的路由器配置主页和其他页面。
  主页和其他页面仅呈现文本并调用公共useLocation挂钩。
  在useLocation钩子中,我们将根据window。location。pathname执行一些操作,这是一个全局范围的变量。FILENAMEindex。jsimportReactfromreact;import{render}fromreactdom;import{BrowserRouterasRouter,Route,Link}fromreactrouterdom;importOtherfrom。componentsOther;importHomefrom。componentsHome;BasicRoutertorenderHomePageandOtherPageconstBasicExample()(RouterulliLinktoHomeLinkliliLinktootherOtherLinkliulhrRouteexactpathcomponent{Home}Routepathothercomponent{Other}Router);render(BasicExample,document。getElementById(root));FILENAMEuseLocation。jsThisisthehookthatwewillberunningoneachpageimport{useEffect}fromreact;constuseLocation(pathname){useEffect((){Ifthepathnameissameascurrentpagepath,performsomeoperationForthisexample,theoperationistoalerttheuseronlyifpathnamepassedandwindow。location。pathnameareequalif(pathnamewindow。location。pathname){alert(OnPage,pathname{pathname},window。location。pathname{window。location。pathname});}},〔pathname,window。location。pathname〕);};exportdefaultuseLocation;HomePageimportReactfromreact;importuseLocationfrom。。useLocation;constHome(){useLocation();returnh2Homeh2;};exportdefaultHome;OtherPageimportReactfromreact;importuseLocationfrom。。useLocation;constOther(){useLocation(other);returnh2Otherh2;};exportdefaultOther;相互作用
  在交互中,我们可以看到,一旦我们登陆主页,我们就会看到路径的警告,然后导航到其他页面,我们会看到路径other的警告。
  一切似乎都很好,那么问题是什么?问题
  让我们修改代码以在效果运行完成后执行清理操作。
  在修改后的代码中,我们会将警报作为清理操作的一部分。FILENAMEuseLocation。jsThisisthehookthatwewillberunningoneachpageimport{useEffect}fromreact;constuseLocation(pathname){useEffect((){Ifthepathnameissameascurrentpagepath,performsomeoperationForthisexample,theoperationistoalerttheuseronlyifpathnamepassedandwindow。location。pathnameareequalif(pathnamewindow。location。pathname){MODIFIEDCODEHEREremovedalertfromthisconditiondoSomeOperation()}MODIFIEDCODEHERECLEANUPOPERATIONAddedthesamealertherereturn(){alert(OnPage,pathname{pathname},window。location。pathname{window。location。pathname});}},〔pathname,window。location。pathname〕);};exportdefaultuseLocation;
  现在让我们看看交互
  当我们导航到其他页面时,主页效果已经完成运行并运行清理操作。
  虽然我们希望路径和路径名相同,但在警报中我们有路径名‘’和window。location。pathname‘other’。
  发生这种情况是因为window。location。pathname在清理操作开始时发生了变化。
  当我们从其他页面导航回主页时,也会发生同样的事情。解决方案
  让我们修改代码以在依赖项中不使用window。location。pathname,而是使用钩子中定义的局部变量。FILENAMEuseLocation。jsThisisthehookthatwewillberunningoneachpageimport{useEffect}fromreact;constuseLocation(pathname){MODIFIEDCODEHEREAssignedpathwindow。location。pathnameUsethisvariableacrossthehookconstpathwindow。location。pathname;useEffect((){Ifthepathnameissameascurrentpagepath,performsomeoperationForthisexample,theoperationistoalerttheuseronlyifpathnamepassedandpathareequalif(pathnamepath){doSomeOperation()}return(){alert(OnPage,pathname{pathname},window。location。pathname{path}Usepathinsteadofwindow。location。pathname);}},〔pathname,path〕);};exportdefaultuseLocation;
  现在让我们看看交互
  应用修复后,我们可以看到我们获得了正确且一致的值。
  这是可行的,因为路径是每个hook实例的局部变量。虽然它在初始化时被分配给window。location。pathname,但只有在重新渲染时才会重新分配。
  你遇到过这样的问题吗!请在评论中让我知道!

足协又一大鱼落网被曝出,泰山队又整新鲜事儿自李铁东窗事发后,中国足协目前被查了个底朝天,下至退役球员秦升,上至足协主席陈戌源,可谓是改朝换代。日前足协又爆出一条大鱼被带走调查足协纪律委员会主任王小平,估计是一去不复返了……勇士伤病情况更新别利察背部痉挛,一哥缺席,怀斯曼开始训练勇士最近的状态很不错,而且从最近的比赛来看,克莱汤普森的状态也越来越好了,当然库里的手感也在回暖,最重要的就是球员之间的磨合也变得不错了。全明星方面,维金斯和库里也进入了首发,……专为奇亚币设计群联推出XPlot系列SSD方案,寿命最高54IT之家5月27日消息中国台湾地区的Computex2021电脑展即将开幕,今年群联电子(Phison)带来了一系列SSD主控、UFS3。1闪存等产品,其中E18主控连续读取速……群联发布PS5018E18SSD主控12nm制程,支持176IT之家5月26日消息群联电子(Phison)昨日正式推出全新的NVMeSSD主控芯片,型号为PS5018E18。这款芯片采用PCIe4。04通道,读写性能均突破7000MBs……女性秋季养生,中医告诉你千万要做好这五件事,少生病还养颜寒露已过,离冬天已经越来越近,在我身边很多的女性都开始陆陆续续加入秋季养生这场大军。一场秋雨一场寒,温度开始降低,天气也开始变得越来越寒冷,今年的秋燥比较厉害,但天气又突然的降……十铨预热USB3。2Gen22152移动固态硬盘最快2GBsIT之家5月15日消息根据外媒techpowerup消息,存储厂商十铨科技(TEAMGOUP)本周宣布,即将推出TFORCE系列新款移动固态硬盘,最大8TB容量,读写速率最高2……外媒奇亚币挖矿可使SSD在几周内损坏IT之家5月12日消息新型数字加密货币奇亚币(Chia)近日十分火爆,带动了大容量机械硬盘以及固态硬盘(SSD)的热销。这种加密货币以硬盘空间容量的大小决定挖矿效率,同时需要较……黄金目前处于熊市,机构为何预测明年有望反弹至1900美元?由于美联储仍在进行历史性的加息,黄金市场将面临更多损失。但一旦美联储可能放松政策的迹象出现,金价将回归上涨模式。根据荷兰国际的最新展望,预计最早将于明年实现。今年迄今为止……丁俊晖好日子到头了!奥沙利文助赵心童上位,奥沙利文狮子大开口说到丁俊晖、赵心童、奥沙利文相信很多斯诺克球迷朋友不陌生,他们都是非常出色的斯诺克运动员,3人都拿到过排名赛冠军,其中奥沙利文已经拿到7次世锦赛冠军,39个排名赛冠军,1975……海盗船发布新款MP600系列SSD最高7GBs,支持水冷散热IT之家1月28日消息今晚,海盗船发布了两款MP600系列PCIe4。0SSD,分别是入门级的MP600CORE和高性能的MP600PRO。IT之家了解到,MP600CO……小王子金句摘录中英对照版所有的大人都曾经是个孩子。可惜,他们当中记得这一点的并不多。Allgrownupswereoncechildrenalthoughfewofthemrememberit。你知道……扎达克发布TWSS32。5英寸固态硬盘1TB售价约648元IT之家1月24日消息扎达克(ZADAK)近日发布了TWSS32。5英寸固态硬盘,共有512GB1TB2TB容量可选。这款硬盘采用3DTLC颗粒制造,性价比较高。官方信息……
人靠衣装马靠鞍,这是一篇快速提升(注水)战斗力的教学战斗力是幻世九歌游戏中非常重要的。战斗力虽然不能代表全部,但是也是总体实力的一个体现,还能解锁更多的副本。接下来,教你如何提高咱们的战斗力。1。任务做任务是提高经验……瓦尔巴斯跳发让中国女排尴尬天津引入古巴籍土耳其接应二传瓦尔巴斯,虽然只打了五场球,让我这50多年古稀之老球迷看得羡慕,嫉妒,脸红,脸烧,羞愧。瓦尔巴斯太强大了,强大的近乎无懈可击,强大的完全可以邈……脑机接口之父尼科莱利斯为何离开学界,加入中国初创企业澎湃新闻记者邵文脑机接口之父米格尔尼科莱利斯(MiguelNicolelis)宣布加入中国非侵入式脑机接口公司BrainCo(强脑科技)任首席科学顾问。米格尔尼科莱利斯(……每体内维斯不会加盟巴萨,他正与曼联谈判且利物浦切尔西想签他直播吧3月26日讯据《每日体育报》报道,内维斯不会加盟巴萨,他可能签约曼联。报道称,巴萨确实从去年夏天以来就一直在关注鲁本内维斯,当时恰逢布斯克茨可能离队,但是哈维更希望……生意人的明天在哪里改革开放四十年了,社会,市场也由原先的计划经济转变成市场经济。据统计,现在中国注册过的市场主体(企业十个体户)超过一个多亿,占市场总量的三分之二。然而,在这如此庞大的阵营……早安日历每日一签10。102022年10月10日,农历九月十五,星期一,寒露第三天。每年10。10是辛亥革命纪念日。辛亥革命纪念日是中华民国的诞生日,纪念中国爆发的资产阶级民主革命。辛……30分10篮板,辽宁2将完成救赎,张镇麟147连续暴扣杨鸣兑30分10篮板,辽宁2将完成救赎,张镇麟147连续暴扣,杨鸣兑现承诺郭艾伦没有进入到辽宁男篮VS上海男篮的大名单,这其实并不让人意外。毕竟这只是一场常规赛,完全没有必要让……预防慢性病的方法预防慢性病的方法包括健康的饮食方式,生活规律,适当运动,定期体检。1、健康的饮食方式:在预防慢性病的时候要注意健康均衡饮食,限制过多脂肪、刺激性和盐的摄入,多摄入蔬菜水果……吸烟的人如何养肺?多吃这3类食物,润肺养肺冬季到,天气也越发干燥,人们也相继出现鼻干、嗓子干、上火等情况,特别是对于那些喜欢抽烟的人来说,这种上火的情况就非常明显。近期,可以发现前来门诊拿爽口茶的人是越来越多了,其中大……世界排名第一的永久免费开源ERPOdooCRM客户关系管理应本文节选自Odoo亚太金牌服务机构【开源智造】所编写的《ERP真的免费不花钱Odoo应用指南》如需获取完整的知识内容,请至开源智造官网免费获取。感谢网友一键三连:点赞、转发、收……把付出当作人生最大的幸福把付出当作人生最大的幸福,那只有一个理由爱这是一种境界,不是人人可以达到,却也不是高不可攀。在每个人身上,或多或少都有这种光辉闪现。最普遍的付出当推父母对子女……当代散文经年之后的思索文博华人到中年的我,工作之余,喜欢自己一个人呆坐书房,让自己安然端坐于岁月的一隅,守一份经年之后的领悟,倾听生命悠远的歌唱,在金色的阳光里,张开记忆的翅膀,逆着时光的隧道……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网