亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 react-dom-router 處理活動路由/路由更改

如何使用 react-dom-router 處理活動路由/路由更改

aluckdog 2023-03-18 16:45:20
我有一個App頂級組件,它有一個菜單和路線。在菜單上單擊我更新活動項目以反映所選路線。這是代碼:const [activeItem, setActiveItem] = useState(window.location.pathname === '/' ? 'home' : getRouteName());...const handleItemClick = (e, { name }) => {  setActiveItem(name);  window.document.title = 'MyApp - ' + name.charAt(0).toUpperCase() + name.slice(1);};const MenuItem = ({name, title, link}) => (  <Menu.Item    as={Link}    to={link}    name={name}    title={title}    active={activeItem === name}    onClick={handleItemClick}  >    {title}  </Menu.Item>);...<Menu /> //iterate over items<Switch>  <Route exact path="/" component={Home} />  ...</Switch>它運行良好,直到其中一個組件重定向到另一個組件。因此,如果我轉到/comp1(無論是通過單擊還是直接瀏覽),菜單項activeItem將顯示為活動狀態。但是,如果我轉到并添加一個按鈕以導航到(使用組件或 ),則活動項目將保留在.comp1comp1comp2comp1<Link>history.push('/comp1')comp2任何想法如何觸發App組件中的更改以反映路由更改,最好不需要將功能放入handleActiveItem上下文中,或將其傳遞給所有其他組件?
查看完整描述

2 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

您可以使用 NavLink 獲得相同的結果,并且它會更簡單一些,因為活動項目已為您處理。


https://reactrouter.com/web/api/NavLink


<NavLink> A special version of the <Link> that will add styling attributes to the rendered element when it matches the current URL


<NavLink to="/foo">foo</NavLink>

<NavLink to="/bar">bar</NavLink>


查看完整回答
反對 回復 2023-03-18
?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

找到了解決方案!

我現在正在使用useLocation提供的掛鉤來react-router-dom觸發更改活動項目和頁面標題的效果。每次位置更改時都會觸發它,無論是由用戶還是內部組件更改。


查看完整回答
反對 回復 2023-03-18
  • 2 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號