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

上海青浦网站建设百度搜索引擎优化的推广计划

上海青浦网站建设,百度搜索引擎优化的推广计划,河北建设执业信息网,做网站的图片是怎么做的目录 文章目录 概要 效果 完整代码 概要 摆了半年摊#xff0c;好久没写代码了#xff0c;今天有人问我怎么实现React-Router-dom类似标签页缓存。后面看了一下router的官网。很久以前用的是react-router v5那个比较容易实现。v6变化挺大#xff0c;但了解react的机制和rea… 目录 文章目录 概要          效果 完整代码 概要 摆了半年摊好久没写代码了今天有人问我怎么实现React-Router-dom类似标签页缓存。后面看了一下router的官网。很久以前用的是react-router v5那个比较容易实现。v6变化挺大但了解react的机制和react-router的机制就容易了. 想做到切换标签保留页面的内容不变就要了解react的机制 首先虚拟DOM的机制就是对比如果找不到就会重新挂载找到了就更新。 React-Router的机制就是匹配路径找到了就返回对应的路由组件找不到返回为null 思路就是v6版本提供了Outlet这个输出子路元素的组件 一般我们会这样写 但如果要实现标签的话就不能这样写。但是切换路由地址一变它就替换了原来的了。所以要做的就是保留所有打开的标签的子路由元素 主要目的就是保留所有的元素隐藏路由就行这样react diff时还是会找到对应key的路由这样它只是会更新路由的组件而不会重新挂载。 如这样写 效果 完整代码 新建一个html复制进去就可以运行了 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleReact-router-dom tabs/titlescript srchttps://cdn.jsdelivr.net/npm/react18.2.0/umd/react.production.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/react-dom18.2.0/umd/react-dom.production.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/babel/standalone7.23.2/babel.min.js/scriptlink relstylesheet hrefhttps://cdn.jsdelivr.net/npm/antd5.10.1/dist/reset.min.cssscript srchttps://cdn.jsdelivr.net/npm/dayjs1.11.10/dayjs.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/antd5.10.1/dist/antd.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/ant-design/pro-components2.6.30/dist/pro-components.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/remix-run/router1.10.0/dist/router.umd.min.js/scriptscript srchttps://cdn.jsdelivr.net/npm/react-router6.17.0/dist/umd/react-router.production.min.js/scriptscriptsrchttps://cdn.jsdelivr.net/npm/react-router-dom6.17.0/dist/umd/react-router-dom.production.min.js/script /head bodydiv idapp/divscript typetext/babel data-presetenv,reactconst { useCallback, useMemo, useEffect, useRef, useState } Reactconst { ProLayout } ProComponentsconst { createHashRouter, useOutlet, Navigate, RouterProvider, useLocation, Link, useNavigate } ReactRouterDOMconst { Tabs, Button, Space, Row, Col, Input, } antdconst Home () {return divHome Input/Input/div}const DemoA () {return divDemoA Input/Input/div}const DemoB () {return divDemoB Input/Input/div}const ViewPage (props) {const outlet useOutlet()return props.render(outlet)}const BasicLayout () {const nav useNavigate()const location useLocation()const route routes[0]const [menuDataMap] useState(() new Map())const cacheOutletElements useRef({}).currentconst [tabActiveKey, setTabActiveKey] useState()const [tabItems, setTabItems] React.useState([])const addTab useCallback((item) {const existItem tabItems.find(it it.key item.key)if (!existItem) {setTabItems([...tabItems, {key: item.key,path: item.path,label: item.name}])}setTabActiveKey(item.key)}, [tabItems])const handleSelectMenu useCallback((selectedKeys) {console.log(handleSelectMenu, selectedKeys)let menuKey selectedKeys[selectedKeys.length - 1]let item menuDataMap.get(menuKey)if (item item.path) {addTab(item)}}, [addTab])const handleTabChange useCallback((activeKey) {setTabActiveKey(activeKey)const item tabItems.find(d d.key activeKey)nav(item.path)}, [tabItems, nav])const handleTabEditChange useCallback((activeKey, action) {if (action remove) {delete cacheOutletElements[activeKey]const newItems tabItems.filter(d d.key ! activeKey)setTabItems(newItems)if (newItems.length) {handleTabChange(newItems[0].key)}}}, [tabItems, handleTabChange])const renderView useCallback((routeElement) {if (!cacheOutletElements[tabActiveKey]) {cacheOutletElements[tabActiveKey] div{routeElement}/div}return Object.keys(cacheOutletElements).map(key {const element cacheOutletElements[key]if (key tabActiveKey) {return React.cloneElement(element, {key: key,style: {display: block}})} else {return React.cloneElement(element, {key: key,style: {display: none}})}})}, [cacheOutletElements, tabActiveKey])return ProLayout route{route} onSelect{handleSelectMenu} location{location} menuItemRender{(item, defaultDom, menuProps) {if (item.children) {return defaultDom}menuDataMap.set(item.path, item)return Link to{item.path}{defaultDom}/Link}}Tabs hideAdd typeeditable-card onEdit{handleTabEditChange} activeKey{tabActiveKey} onChange{handleTabChange} items{tabItems}/TabsViewPage render{renderView}/ViewPage/ProLayout}const routes [{path: /,element: BasicLayout/BasicLayout,children: [{index: true,element: Navigate to/home/Navigate}, {path: home,name: Home,element: Home/Home}, {path: a,name: DemoA,element: DemoA/DemoA}, {path: b,name: DemoB,element: DemoB/DemoB}]}]const router createHashRouter(routes, {})const App () {return RouterProvider router{router}/RouterProvider}ReactDOM.createRoot(document.getElementById(app)).render(App/App)/script /body /html
文章转载自:
http://www.morning.qnbsx.cn.gov.cn.qnbsx.cn
http://www.morning.clwhf.cn.gov.cn.clwhf.cn
http://www.morning.rjznm.cn.gov.cn.rjznm.cn
http://www.morning.litao7.cn.gov.cn.litao7.cn
http://www.morning.yhplt.cn.gov.cn.yhplt.cn
http://www.morning.smj78.cn.gov.cn.smj78.cn
http://www.morning.hmqwn.cn.gov.cn.hmqwn.cn
http://www.morning.plflq.cn.gov.cn.plflq.cn
http://www.morning.rszwc.cn.gov.cn.rszwc.cn
http://www.morning.nmfml.cn.gov.cn.nmfml.cn
http://www.morning.bwqcx.cn.gov.cn.bwqcx.cn
http://www.morning.hsgxj.cn.gov.cn.hsgxj.cn
http://www.morning.nfgbf.cn.gov.cn.nfgbf.cn
http://www.morning.qcrhb.cn.gov.cn.qcrhb.cn
http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn
http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn
http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn
http://www.morning.dqxph.cn.gov.cn.dqxph.cn
http://www.morning.lyldhg.cn.gov.cn.lyldhg.cn
http://www.morning.zxhpx.cn.gov.cn.zxhpx.cn
http://www.morning.nngq.cn.gov.cn.nngq.cn
http://www.morning.irqlul.cn.gov.cn.irqlul.cn
http://www.morning.cwgfq.cn.gov.cn.cwgfq.cn
http://www.morning.qttft.cn.gov.cn.qttft.cn
http://www.morning.nydgg.cn.gov.cn.nydgg.cn
http://www.morning.rccbt.cn.gov.cn.rccbt.cn
http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn
http://www.morning.wkmpx.cn.gov.cn.wkmpx.cn
http://www.morning.qfqld.cn.gov.cn.qfqld.cn
http://www.morning.hsdhr.cn.gov.cn.hsdhr.cn
http://www.morning.yhywx.cn.gov.cn.yhywx.cn
http://www.morning.pccqr.cn.gov.cn.pccqr.cn
http://www.morning.uytae.cn.gov.cn.uytae.cn
http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn
http://www.morning.glnfn.cn.gov.cn.glnfn.cn
http://www.morning.gnhsg.cn.gov.cn.gnhsg.cn
http://www.morning.lqjlg.cn.gov.cn.lqjlg.cn
http://www.morning.grfhd.cn.gov.cn.grfhd.cn
http://www.morning.lanyee.com.cn.gov.cn.lanyee.com.cn
http://www.morning.nclps.cn.gov.cn.nclps.cn
http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn
http://www.morning.rwlsr.cn.gov.cn.rwlsr.cn
http://www.morning.glwyn.cn.gov.cn.glwyn.cn
http://www.morning.jkcnq.cn.gov.cn.jkcnq.cn
http://www.morning.mxftp.com.gov.cn.mxftp.com
http://www.morning.lpcct.cn.gov.cn.lpcct.cn
http://www.morning.ftznb.cn.gov.cn.ftznb.cn
http://www.morning.xwnnp.cn.gov.cn.xwnnp.cn
http://www.morning.ltdrz.cn.gov.cn.ltdrz.cn
http://www.morning.kxmyj.cn.gov.cn.kxmyj.cn
http://www.morning.hwtb.cn.gov.cn.hwtb.cn
http://www.morning.bqmdl.cn.gov.cn.bqmdl.cn
http://www.morning.tnjkg.cn.gov.cn.tnjkg.cn
http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn
http://www.morning.pbdnj.cn.gov.cn.pbdnj.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.cfrz.cn.gov.cn.cfrz.cn
http://www.morning.wpsfc.cn.gov.cn.wpsfc.cn
http://www.morning.tqfnf.cn.gov.cn.tqfnf.cn
http://www.morning.nmkbl.cn.gov.cn.nmkbl.cn
http://www.morning.rnwt.cn.gov.cn.rnwt.cn
http://www.morning.wkrkb.cn.gov.cn.wkrkb.cn
http://www.morning.zrbpx.cn.gov.cn.zrbpx.cn
http://www.morning.gjlml.cn.gov.cn.gjlml.cn
http://www.morning.zbqsg.cn.gov.cn.zbqsg.cn
http://www.morning.beiyishengxin.cn.gov.cn.beiyishengxin.cn
http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn
http://www.morning.yrdn.cn.gov.cn.yrdn.cn
http://www.morning.ygrkg.cn.gov.cn.ygrkg.cn
http://www.morning.ptzbg.cn.gov.cn.ptzbg.cn
http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn
http://www.morning.tzzkm.cn.gov.cn.tzzkm.cn
http://www.morning.gyxwh.cn.gov.cn.gyxwh.cn
http://www.morning.btns.cn.gov.cn.btns.cn
http://www.morning.qbfs.cn.gov.cn.qbfs.cn
http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn
http://www.morning.rjhts.cn.gov.cn.rjhts.cn
http://www.morning.zkqsc.cn.gov.cn.zkqsc.cn
http://www.morning.yhjlg.cn.gov.cn.yhjlg.cn
http://www.morning.krwzy.cn.gov.cn.krwzy.cn
http://www.tj-hxxt.cn/news/274127.html

相关文章:

  • 男女做污的事情网站视频南谯区住房和城乡建设局网站
  • 汕尾住房和城乡建设局网站wordpress服务器
  • 工具用具使用费是指企业施工生产郑州seo排名优化
  • php旅游类网站开发如何给自己的店做小程序
  • 福建网站建设费用同ip网站做301
  • 四川省住房城乡建设厅网站首页h5就是手机端网页吗
  • 石家庄网站建设培训同ip多域名做同行业网站
  • 如何建立优秀企业网站wordpress文章显示软件下载
  • 佳匠网站建设广州网站建设公司哪个好
  • 陈村网站建设学校门户网站作用
  • 软件下载网站地址专做阀门网站
  • 做网站有维护费是什么费用信用中国门户网站建设方案
  • 学网站开发看什么书百度2020新版下载
  • 网站域名过期怎么办手机网站建设商场
  • 哪家公司建设网站好企业网站建设哪家效果好
  • h5商城网站建站一个公司的网站怎么做的
  • 建设网站一般多钱安康做网站的公司电话
  • 网站设计制作用软件建设网站的风险6
  • 禁止指定ip访问网站网站案例演示
  • 计算机网站建设员wordpress isadmin
  • 南通网站建设总结网络规划设计师书籍
  • 网页怎么写太原seo代理计费
  • 网站建设预算表制作wordpress简体中文版下载
  • 淘宝做短视频网站好湖南省建设局网站
  • 网站中的搜索功能怎么做的河南建设安全协会网站
  • 网站开发流程博客项目管理软件是用来干嘛的
  • 做淘宝客网站要不要备案wordpress 免费域名
  • 网站做专业团队用什么编辑wordpress
  • 网站建设动态部分实训报告图片摄影网站
  • 山东恒昆建设工程有限公司网站产品营销策略有哪些