最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

React實(shí)現(xiàn)TabBar切換與高亮功能

 更新時(shí)間:2026年05月09日 09:32:13   作者:xiwahub  
文章介紹了通過React Router的Route組件的exact屬性實(shí)現(xiàn)精確匹配路由路徑,并在路由切換時(shí)執(zhí)行菜單高亮邏輯,通過componentDidUpdate生命周期方法判斷路由地址是否切換來實(shí)現(xiàn)菜單項(xiàng)的高亮效果,需要的朋友可以參考下

渲染 TabBar.Item

// TabBar 數(shù)據(jù)
const tabItems = [
  {
    title: "首頁",
    icon: "icon-ind",
    path: "/home",
  },
  {
    title: "找房",
    icon: "icon-findHouse",
    path: "/home/list",
  },
  {
    title: "資訊",
    icon: "icon-infom",
    path: "/home/news",
  },
  {
    title: "我的",
    icon: "icon-my",
    path: "/home/profile",
  },
];
// 渲染 TabBar.Item
  renderTabBarItem() {
    return tabItems.map((item) => (
      <TabBar.Item
        title={item.title}
        key={item.title}
        // 默認(rèn)圖標(biāo)
        icon={<i className={`iconfont ${item.icon}`} />}
        // 選中圖標(biāo)
        selectedIcon={<i className={`iconfont ${item.icon}`} />}
        // 是否選中
        selected={this.state.selectedTab === item.path}
        // 點(diǎn)擊菜單項(xiàng)時(shí),進(jìn)行路由切換
        onPress={() => {
          this.setState({
            selectedTab: item.path,
          });

          // 路由切換
          this.props.history.push(item.path);
        }}
      />
    ));
  }

內(nèi)容通過路由來實(shí)現(xiàn)切換渲染

noRenderContent={true}

exact 是 React Router 中 Route 組件的一個(gè)屬性。

功能: 精確匹配路由路徑。

當(dāng) exact 屬性存在時(shí),只有當(dāng)訪問的路徑與 /home 完全匹配時(shí),才會(huì)渲染 [Index](javascript:void(0)) 組件。如果沒有 exact,訪問 /home/news、/home/list 等路徑時(shí),也會(huì)匹配到 /home 路由并渲染 Index 組件。

render() {
    // console.log(this.props.location.pathname)
    return (
      <div className="home">
        {/* 2.3 渲染子路由 */}
        <Route path="/home/news" component={News} />
        <Route exact path="/home" component={Index} />
        <Route path="/home/list" component={HouseList} />
        <Route path="/home/profile" component={Profile} />
        {/* TabBar */}

        <TabBar tintColor="#21b97a" noRenderContent={true} barTintColor="white">
          {this.renderTabBarItem()}
        </TabBar>
      </div>
    );
  }

思路:在 路由切換 時(shí),也執(zhí)行 菜單高亮 的邏輯代碼

1 添加 componentDidUpdate 鉤子函數(shù)

2 在鉤子函數(shù)中判斷路由地址是否切換(因?yàn)槁酚傻男畔⑹峭ㄟ^ props 傳遞給組件的,所以,通過比較更新前后的兩個(gè)props)

3 在路由地址切換時(shí),讓 菜單高亮

// 組件接收到新的props(此處,實(shí)際上是路由信息)就會(huì)觸發(fā)該鉤子函數(shù)
  componentDidUpdate(prevProps) {
    // prevProps 上一次的props,此處也就是上一次的路由信息
    // this.props 當(dāng)前最新的props,此處也就是最新的路由信息
    // 注意:在該鉤子函數(shù)中更新狀態(tài)時(shí),一定要在 條件判斷 中進(jìn)行,否則會(huì)造成遞歸更新的問題
    if (prevProps.location.pathname !== this.props.location.pathname) {
      // 此時(shí),就說明路由發(fā)生切換了
      this.setState({
        selectedTab: this.props.location.pathname,
      });
    }
  }

默認(rèn)選中的TabBar菜單項(xiàng)

state = {
    // 默認(rèn)選中的TabBar菜單項(xiàng)
    selectedTab: this.props.location.pathname,
  };

是否選中

selected={this.state.selectedTab === item.path}

點(diǎn)擊菜單項(xiàng)時(shí),進(jìn)行路由切換

onPress={() => {
          this.setState({
            selectedTab: item.path,
          });

          // 路由切換
          this.props.history.push(item.path);
        }}

首頁路由處理

import React from "react";
import { BrowserRouter as Router, Route, Redirect } from "react-router-dom";
import Home from "./pages/Home";
import CityList from "./pages/CityList";

function App() {
  return (
    <Router>
      <div className="App">
        <Route
          path="/"
          exact
          render={() => <Redirect to="/home" />}
        />
        <Route path="/home" component={Home} />
        <Route path="/city" component={CityList} />
      </div>
    </Router>
  );
}

export default App;

到此這篇關(guān)于React實(shí)現(xiàn)TabBar切換與高亮功能的文章就介紹到這了,更多相關(guān)React TabBar切換與高亮內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一篇文章介紹redux、react-redux、redux-saga總結(jié)

    一篇文章介紹redux、react-redux、redux-saga總結(jié)

    這篇文章主要介紹了一篇文章介紹redux、react-redux、redux-saga總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • React如何避免子組件無效刷新

    React如何避免子組件無效刷新

    這篇文章主要介紹了React幾種避免子組件無效刷新的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • React中條件渲染的常見方法總結(jié)

    React中條件渲染的常見方法總結(jié)

    條件渲染在React開發(fā)中非常重要的功能,它允許開發(fā)人員根據(jù)條件控制渲染的內(nèi)容,在創(chuàng)建動(dòng)態(tài)和交互式用戶界面方面發(fā)揮著至關(guān)重要的作用,本文總結(jié)了常用的的條件渲染方法,需要的朋友可以參考下
    2024-01-01
  • antd4里table滾動(dòng)的實(shí)現(xiàn)

    antd4里table滾動(dòng)的實(shí)現(xiàn)

    本文主要介紹了antd4里table滾動(dòng)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • react實(shí)現(xiàn)鼠標(biāo)懸停在SVG地圖上某個(gè)區(qū)域時(shí)上方呈現(xiàn)柱形圖效果

    react實(shí)現(xiàn)鼠標(biāo)懸停在SVG地圖上某個(gè)區(qū)域時(shí)上方呈現(xiàn)柱形圖效果

    這篇文章主要介紹了react實(shí)現(xiàn)鼠標(biāo)懸停在SVG地圖上某個(gè)區(qū)域時(shí),其上方呈現(xiàn)柱形圖,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • 手動(dòng)用webpack搭建第一個(gè)ReactApp的示例

    手動(dòng)用webpack搭建第一個(gè)ReactApp的示例

    本篇文章主要介紹了手動(dòng)用webpack搭第一個(gè) ReactApp的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • react native創(chuàng)建項(xiàng)目常用插件詳解

    react native創(chuàng)建項(xiàng)目常用插件詳解

    文章詳細(xì)介紹了React Native項(xiàng)目的頁面路徑目錄設(shè)計(jì)原則、路由管理、狀態(tài)管理、服務(wù)層管理、自定義hook和工具函數(shù)的使用方法、適配方案以及樣式排列對齊方式,通過這些原則和方法,可以提高項(xiàng)目的可維護(hù)性和可擴(kuò)展性
    2025-12-12
  • React移動(dòng)端項(xiàng)目之pdf預(yù)覽問題

    React移動(dòng)端項(xiàng)目之pdf預(yù)覽問題

    這篇文章主要介紹了React移動(dòng)端項(xiàng)目之pdf預(yù)覽問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析

    React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析

    這篇文章主要為大家介紹了React狀態(tài)更新的優(yōu)先級(jí)機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React狀態(tài)管理的簡明指南

    React狀態(tài)管理的簡明指南

    Redux 是React最常用的集中狀態(tài)管理工具,本文主要介紹了React狀態(tài)管理的簡明指南,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論

五河县| 达日县| 黑龙江省| 庆云县| 长宁县| 泸定县| 酒泉市| 芜湖县| 年辖:市辖区| 新和县| 开封县| 通化县| 万安县| 亳州市| 香河县| 申扎县| 兰坪| 通海县| 偃师市| 阜新市| 开封市| 卫辉市| 武义县| 子洲县| 江西省| 荔波县| 郯城县| 怀集县| 陆川县| 东莞市| 仁寿县| 诸暨市| 冷水江市| 夏津县| 河北省| 甘洛县| 太和县| 安义县| 湘阴县| 诸暨市| 富蕴县|