范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

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

  像‘window.location.pathname’这样的外部范围值不是有效的依赖项,因为改变它们不会重新渲染组件。 用例
  假设我们必须在每个页面上执行一个操作,并且每当路由更改时我们都必须执行此操作。
  由于我们必须在每个页面组件上执行操作,所以让我们将逻辑抽象为一个钩子。文件
  index.js 文件包含具有两个页面的路由器配置 -> 主页和其他页面。
  主页和其他页面仅呈现文本并调用公共 useLocation 挂钩。
  在 useLocation 钩子中,我们将根据 window.location.pathname 执行一些操作,这是一个全局范围的变量。// FILENAME -> index.js  import React from "react"; import { render } from "react-dom"; import { BrowserRouter as Router, Route, Link } from "react-router-dom";  import Other from "./components/Other"; import Home from "./components/Home";  // Basic Router to render Home Page and Other Page const BasicExample = () => (               
  • Home
  • Other

); render(, document.getElementById("root"));// FILENAME -> useLocation.js // This is the hook that we will be running on each page import { useEffect } from "react"; const useLocation = (pathname) => { useEffect(() => { /* * If the pathname is same as current page path, perform some operation * For this example, the operation is to alert the user * only if pathname passed and window.location.pathname are equal */ if (pathname === window.location.pathname) { alert( `On Page -> , pathname -> ${pathname}, window.location.pathname -> ${window.location.pathname}` ); } }, [pathname, window.location.pathname]); }; export default useLocation;// Home Page import React from "react"; import useLocation from "../useLocation"; const Home = () => { useLocation("/"); return

Home

; }; export default Home; // ---------------------------------------------------------------------- // Other Page import React from "react"; import useLocation from "../useLocation"; const Other = () => { useLocation("/other"); return

Other

; }; export default Other;相互作用   在交互中,我们可以看到,一旦我们登陆主页,我们就会看到路径 -> "/" 的警告,然后导航到其他页面,我们会看到路径 -> "/other" 的警告。   一切似乎都很好,那么问题是什么? 问题   让我们修改代码以在效果运行完成后执行清理操作。   在修改后的代码中,我们会将警报作为清理操作的一部分。// FILENAME -> useLocation.js // This is the hook that we will be running on each page import { useEffect } from "react"; const useLocation = (pathname) => { useEffect(() => { /* * If the pathname is same as current page path, perform some operation * For this example, the operation is to alert the user * only if pathname passed and window.location.pathname are equal */ if (pathname === window.location.pathname) { // MODIFIED CODE HERE -> removed alert from this condition // doSomeOperation() } // MODIFIED CODE HERE -> CLEANUP OPERATION // Added the same alert here return () => { alert( `On Page -> , pathname -> ${pathname}, window.location.pathname -> ${window.location.pathname}` ); } }, [pathname, window.location.pathname]); }; export default useLocation;   现在让我们看看交互   当我们导航到其他页面时,主页效果已经完成运行并运行清理操作。   虽然我们希望路径和路径名相同,但在警报中我们有路径名 -> ‘/’ 和 window.location.pathname -> ‘/other’。   发生这种情况是因为 window.location.pathname 在清理操作开始时发生了变化。   当我们从其他页面导航回主页时,也会发生同样的事情。 解决方案   让我们修改代码以在依赖项中不使用 window.location.pathname ,而是使用钩子中定义的局部变量。// FILENAME -> useLocation.js // This is the hook that we will be running on each page import { useEffect } from "react"; const useLocation = (pathname) => { // MODIFIED CODE HERE -> Assigned path = window.location.pathname // Use this variable across the hook const path = window.location.pathname; useEffect(() => { /* * If the pathname is same as current page path, perform some operation * For this example, the operation is to alert the user * only if pathname passed and path are equal */ if (pathname === path) { // doSomeOperation() } return () => { alert( `On Page -> , pathname -> ${pathname}, window.location.pathname -> ${path}` // Use path instead of window.location.pathname ); } }, [pathname, path]); }; export default useLocation;   现在让我们看看交互   应用修复后,我们可以看到我们获得了正确且一致的值。   这是可行的,因为路径是每个hook实例的局部变量。 虽然它在初始化时被分配给 window.location.pathname,但只有在重新渲染时才会重新分配。   你遇到过这样的问题吗! 请在评论中让我知道!

交易圣经(收藏)交易之道,刚者易折。惟有至阴至柔,方可纵横天下。天下柔弱者莫如水,然上善若水。上善若水,无欲则刚成功,等于小的亏损,加上大大小小的利润,多次累积。做到不出现大亏损很简单。以生存为第6个月后宝宝加辅食还夜奶不休?当断要断,教你几个小妙招用起来文莹妈自从当了妈,一觉睡到天亮都不知道是啥滋味了。母乳喂养的妈妈见识过,凌晨1200,100,200,300,400的天空。因为孩子晚上需要起来吃夜奶。小婴儿喝夜奶是生理的需求,母流星雨很好看但流星为什么会发热发光呢?流星雨,一直是宇宙中浪漫而神秘的存在,许多人都期待着亲眼目睹流星划破天际的美景。一般到了年底,能观测到的流星雨还有很多,比如11月份的猎户座流星雨,以及12月份的双子座流星雨等等。秋冬干癣大爆发!医揪关键凶手羊肉炉姜母鸭超NG干癣属于自体免疫失调疾病。(图取自免费图库)记者赵于婷台北报导秋冬东北季风一波接一波,不少民众纷纷大吃姜母鸭羊肉补暖身,但冬天是干癣好发季节,进补容易导致症状大发作。中医师周宗翰表个子不高又长相平平,她凭穿搭提升气质,会穿太重要了大家发现没有,走在街上的时候你经常会发现,有一些女生,她们长相平平,个子也不是非常高挑,但是走在街上却总是能够呈现出一种让人忽视不了的魅力感,这种类型的女孩子们通常都非常会搭配,个毛阿敏丈夫解直锟从印刷厂工人到身价万亿,生活低调热衷做慈善俗话说低调做人,高调做事。所谓闷声发大财,其实就是这个意思。如今,知道这句谚语的人很多,但却很少有人能够做到这种地步,而解直锟就做到了。在他的身后,不但有一座万亿帝国,还有妻子毛阿猝不及防!全球首款2nm芯片问世,IBM不动声色抛出了王炸我们都知道,随着半导体芯片行业的发展,芯片制程工艺越来越先进,从早前的微米工艺已经发展到了纳米工艺。目前最成熟及最先进的是5纳米工艺。不过在今年早前的时候,台积电和三星都已经表示在苏宁易购发布11月手机消费报告iPhone以旧换新火热近期,中国信通院网站发布数据显示,2021年110月,国内市场手机总体出货量累计2。82亿部,同比增长12。0,其中,5G手机出货量2。10亿部,同比增长68。8,占同期手机出货量有网友认为如果他是柳传志,能把联想做成第二个微软司马南与联想的舆论大战已经进行了有一个多月了,现在,各路专家纷纷登场,从自己的角度解读联想和司马南,大家都有自己的道理,我们作为普通的吃瓜群众,对于当年的历史背景不了解,对于很多专国剧盛典红毯张萌大秀好身材,董洁显年轻,吴谨言满脸油光一年一度的国剧盛典开始录制了,想要看内场的颁奖礼,还得等到2022年元旦,但好在红毯环节是直播的,我们不妨先来看明星们在时尚方面的表现。黎耀祥邓萃雯这对巾帼枭雄CP居然在内地红毯上张大大生日派对,杨幂缺席baby淡妆温柔出镜,宋祖儿王嘉尔也到场要说贵圈人缘好,并且爱高调过生日的主持人,那一定是张大大。身为贵圈的著名主持人之一,拥有超强社交能力的张大大人缘极好,当红的双杨姐妹花杨幂baby连续多年为他庆生,他每年的生日派对
冬季雨中的郁金香细雨纷纷,寒风袭人,挡不住反季郁金香的诱惑,我沿着世博园柏油路,走进了时光印记大道。空中弥漫着春天的味道,鸟儿不时从雨帘中划过,我来了!我轻轻呼唤花圃里的郁金香,它微笑着一点也不动年纪轻轻就绝经了?告诫女性提前绝经的5大因素,需尽早预防!对于健康女性来讲,进入青春期之后,子宫内膜会出现周期性的增生以及脱落现象,且会伴有子宫出血排出体外,从而形成月经。一般在进入4559岁之间的时候,由于卵巢功能的衰竭,就会导致体内的湖人3换2报价西亚卡姆!报价背景湖人面对西部前八的国王输球后,最近取得了1胜4负的成绩,唯一赢的一场还是送温暖的火箭,面对季后赛级别的球队,湖人确实就是打不过,总是打到最后一分钟才败阵来,打到关键时刻的詹2大国产最强组织者被放弃,乔帅看重身高,选材跟杜锋截然不同杜锋担任国家队主帅时期,徐杰和孙铭徽是他最喜欢的两位球员。这两个国产后卫,是目前国产球员当中,组织能力最出色的球员。孙铭徽目前是国产后卫助攻榜排名第一的球员。在球队需要他得分的时候广东4国手2人出局,徐杰受限于身高,顶薪锋线防守端太吃亏赵睿胡明轩徐杰任骏飞是目前广东男篮的4大国手,这4人都入选了5人男篮国家队人才库。这一次乔帅公布大名单,这4位球员都有机会入选。但最终的结果,4人当中2位球员落选,让球迷感到比较可国乒小将打疯了!狂轰111淘汰强敌,与张本智和同岁,前途无量乒乓球WTT卡塔尔赛激战正酣,北京时间1月20日凌晨,国乒传回捷报,年仅19岁的男队小将向鹏气势如虹,不但大比分30横扫印度名将阿昌塔,而且小比分更是112111114,简直是单方正式确定!威姆斯去广东宏远过年,欢迎回家广东宏远俱乐部邀请威姆斯一起过春节CBA第二阶段的比赛已经全部结束了,第三阶段的比赛将于3月份才正式开打,中间有一个多月的假期,球员可以和亲人一起过春节,但外援就比较孤单了。此前就斯诺克将决出2席4强!黑马42到32!今晨,斯诺克世界大奖赛继续进行,将决出2席4强。桑坎姆变身黑马,8强战43领先马克威廉姆斯夺得赛点,很可能连赢75双雄打进半决赛曾在本赛季英锦赛决赛战胜丁俊晖夺冠的马克艾伦12后来怀才不遇距离成为中国男篮栋梁,徐杰和陶汉林只差身高乔尔杰维奇上任伊始,就一直在强调要对标欧美,这里不是说实力,而是选材的身体素质,尤其是身高,这也值得理解,毕竟乔帅之前执教的塞尔维亚,身体条件就是顶级,中国目前选材有些不上不下,既赤木是个没前途的中锋,不要说河田雅史了,他甚至比不上花形透有位漫迷朋友问过我赤木刚宪算天赋异禀吗?关于这个问题,我想请他看一个事实赤木身高197cm,体重97kg,自幼就喜欢篮球,并且在湘北接受了三年专业的篮球训练,却仍然只是一个蓝领中锋击败安赛龙是梦想?不!石宇奇破题为时不远与安赛龙激战63分钟后12失利,虽然未能闯进印度公开赛男单第三轮,但石宇奇在1月19日第二轮比赛的表现足以让对手肃然起敬。关注羽毛球运动的都知道,这两年击败安赛龙尤其难,甚至取胜1