纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

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

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

中国四大名桥之一,李嘉诚捐720万重建,这四兄弟每人各捐12这几年去广东潮州旅行的人越来越多。过去很多人说广东是文化的沙漠,不过潮州却是一个例外。潮州这个地方文化自成一派,有自己的语言、音乐、艺术、美食等等。如今很多人去潮州,肯定……2023年,会涨工资吗?胡锡进近日在会议发言中说,希望经济能够迅速恢复起来,大家今年最好都能涨点工资。这话很讨喜,引起了很多人的关注,话题很快冲上了热搜。过去的一年,对大多数人来说非常艰难。20……2674!不听科比建议,湖人放走全明星锋线,詹姆斯错失好帮手前言现在的湖人大名单中几乎所有人都是被交易来的,只有霍顿塔克是在19年选秀大会被湖人队选中,在前几年真真正正被湖人选中的球员全都被交易了,包括英格拉姆,鲍尔,兰德尔,拉塞……再见大巴黎!曝姆巴佩3。8亿欧加盟皇马创最高纪录,世纪转会结在前不久的欧冠中,拥有梅西、内马尔和姆巴佩三大巨星球员的巴黎圣日耳曼早早就被扫地出门。在大巴黎遭遇滑铁卢后,所有媒体和球迷都知道大巴黎的内部必定会发生一场大变动。而近日国外媒体……可繁殖虚拟角色专利,小米这操作把我看笑了小米的这个新专利是真的把机哥我给看笑了。这个专利的名字很长啊,叫:可繁殖的虚拟角色的形象参数生成方式、装置及储存介质。是什么意思呢?专利说明显示,这是一种角色……国庆长假后A股的走势10月3日的外围大盘趁着A股虚脱之后休身养性时,终于坚挺起来。就连A股家对门的BT小日也趁着A股虚脱之后休身养性时,也硬气了起来,把空头按在地上摩擦。从年线来看2021年……核酸公司收入兑现有困难上亿收入回款难,有的还被对半杀价财经新势力新春季有人嫌贵不付钱,有人拿着欠账收不回来只能认了文赵天宇凌馨编王小2022年12月10日,成都,常态核酸检测取消后,一批便民核酸采样点被关闭……(经济)津兴铁路铺轨全部完成年内开通运营新华社石家庄4月6日电(记者冯维健)记者从中国铁路北京局集团有限公司获悉,6日,随着最后一根500米长的钢轨平稳铺设在津兴铁路胜芳右线特大桥桥尾,天津至北京大兴国际机场铁路铺轨……useEffect依赖项中的全局范围变量?像‘window。location。pathname’这样的外部范围值不是有效的依赖项,因为改变它们不会重新渲染组件。用例假设我们必须在每个页面上执行一个操作,并且每当路……60几岁赵雅芝为什么还不老著名演员赵雅芝凭借白娘子传奇红极一时至今她所演的白素贞仍然深入人心,几年前她去敬老院看望老人,却被误认为是小闺女,但是那些头发花白的老人有些大了赵雅芝几岁,有些甚至和赵雅芝是同……医生建议补钙,孕妇回家把钙片当饭吃,孩子出生就患上这个疾病!随着年龄的增长,成为母亲的愿望逐渐占据了越来越多女性的心灵。然而,对于那些身体原因无法受孕的女性来说,这个愿望只能成为一个遥不可及的梦想。不得不说,这是一件非常让人痛苦的事情。……离谱!罚球命中率不如三分球命中率,王哲林被李春江用废了?上海男篮会不会以七连败结束第一阶段的比赛?输给广东男篮还有情可原,但是输给同曦男篮真的令人无法接受了。一波四连败后,上海男篮以1胜5负位列积分榜第十八,与四川男篮、福建男……
英特尔i911900K现身Geekbench单核跑分超上代3英特尔CEO投入大头仍在7nm制程,要恢复领先地位花粉年会华为EasyFit2表带上新华为智选跑步机以及动感单也谈电视剧包青天英伟达悄然降低了对GSyncUltimate显示器的要求不再英伟达官宣5款搭载Reflex延迟分析器的游戏显示器魅族智能手表官方微博已获得认证注册,新品第四季度见realme限量版T恤99元,真我旅行箱托特包体脂秤今日开售戴尔发布新款灵越一体机,搭载11代酷睿戴尔新款XPS13上架11代酷睿,11999元起戴尔灵越7400上架11代酷睿,14。5英寸10bit屏诺基亚9。3PureView等机型通过俄罗斯认证,近期或将推
畅游奉浦丨打卡奉浦四季生态园,收藏四季之美!热播剧男主得了脑垂体瘤,这病怎么早发现?长痘痘怎么调理铁棍山药的功效与作用铁棍山药好处大着呢你不仁我不义!科尔杜兰特在的时候,库里也是勇士队中心手机买家与卖家的经典对话VTuber爆红,虚拟偶像新纪元要来了?香橼计划周四讨论Clubhouse2021年投资机会进行婚前体检要多少钱?无人零售下半场快消玩法向左,深耕渠道向右幼儿园小班的拼音教案冷水鹦鹉水温多少度合适

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形