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

react-native動態(tài)切換tab組件的方法

 更新時間:2018年07月07日 10:36:08   作者:瘋狂紫蕭  
在APP中免不了要使用tab組件,有的是tab切換,也有的是tab分類切換.這篇文章主要介紹了react-native動態(tài)切換tab組件的方法,非常具有實用價值,需要的朋友可以參考下

在APP中免不了要使用tab組件,有的是tab切換,也有的是tab分類切換.

這些組件分成下面兩種.


第一種非常簡單,同時大多數(shù)第三方組件都能達到效果.這里重點講述第二種,我們要讓第二種組件不僅能左右滑動,同時還能夠在點擊的時候自動滑動,將點擊的位置滑動到正中間.

準備

我們先來分析一波.一個滑動組件在APP上是一種什么狀態(tài).

這里可以看出,tab組件需要考慮到長度超過APP的屏幕,并且在超過之后能夠滑動.

同時計算出當前位置需要滑動多少距離才能夠將位置居中.
需要滑動的位置=點擊位置的左邊距-APP屏幕/2+點擊位置的寬度/2

這個公式也就是我們自動滑動的核心了.

開發(fā)

使用ScrollView組件承載tab項,這樣就可以非常簡單的達到滑動的效果.同時添加horizontal、directionalLockEnabled、showsHorizontalScrollIndicatorsnapToAlignment幾個屬性.

<ScrollView ref={e => this.scroll = e}
 horizontal directionalLockEnabled
 showsHorizontalScrollIndicator={false}
 snapToAlignment="center">
 {this.props.data.map((item, index) =>
  {/*具體項*/}
 )}
</ScrollView>

使用TouchableOpacity包裹內容項,同時調用setLaout方法將每個項的寬高等屬性記錄下來,為我們后面計算當前位置做準備.

<TouchableOpacity onPress={() => this.setIndex(index)} 
 onLayout={e => this.setLaout(e.nativeEvent.layout, index)} 
 key={item.id} 
 style={tabBarStyle.itemBtn}>
  <Text style={[tabBarStyle.item, this.state.index === index ? tabBarStyle.active : null]} > {item.name}</Text>
  <View style={[tabBarStyle.line, this.state.index === index ? tabBarStyle.active2 : null]}>    </View>
</TouchableOpacity>

記錄每個項渲染之后的位置,將這些值存在變量里,為后面計算做準備.

laout_list = []
setLaout(layout, index) {
 //存單個項的位置
 this.laout_list[index] = layout;
 //計算所有項的總長度
 this.scrollW += layout.width;
}

接下來就是點擊自動變換位置的計算了.

setIndex(index, bl = true) {
 //先改變點擊項的顏色
 this.setState({ index })
 //兼容錯誤
 if (!this.scroll) return;
 //拿到當前項的位置數(shù)據(jù)
 let layout = this.laout_list[index];
 let rx = deviceWidth / 2;
 //公式
 let sx = layout.x - rx + layout.width / 2;
 //如果還不需要移動,原地待著
 if (sx < 0) sx = 0;
 //移動位置
 sx < this.scrollW - deviceWidth && this.scroll.scrollTo({ x: sx, animated: bl });
 //結尾部分直接移動到底
 sx >= this.scrollW - deviceWidth && this.scroll.scrollToEnd({ animated: bl });
 //觸發(fā)一些需要的外部事件
 this.props.onChange && this.props.onChange(index);
}

gitee地址

github地址

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • react中的useImperativeHandle()和forwardRef()用法

    react中的useImperativeHandle()和forwardRef()用法

    這篇文章主要介紹了react中的useImperativeHandle()和forwardRef()用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • react-router JS 控制路由跳轉實例

    react-router JS 控制路由跳轉實例

    這篇文章主要介紹了react-router JS 控制路由跳轉實例,react實現(xiàn)路由可以直接使用react-router。有興趣的可以了解一下
    2017-06-06
  • 利用ES6語法重構React組件詳解

    利用ES6語法重構React組件詳解

    這篇文章主要介紹了利用ES6語法重構React組件的相關資料,文中通過示例代碼介紹的很詳細,對大家具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • React 中的 useContext使用方法

    React 中的 useContext使用方法

    這篇文章主要介紹了React中的useContext使用,使用useContext在改變一個數(shù)據(jù)時,是通過自己逐級查找對比改變的數(shù)據(jù)然后渲染,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • react-router-dom簡介(推薦)

    react-router-dom簡介(推薦)

    react-router包含三種類型的組件:路由組件、路由匹配組件?、導航組件,在你使用這些組件的時候,都必須先從react-router-dom引入,這篇文章主要介紹了react-router-dom簡介,需要的朋友可以參考下
    2022-12-12
  • React學習筆記之列表渲染示例詳解

    React學習筆記之列表渲染示例詳解

    最近在學習React,學習到了列表渲染這一塊,發(fā)現(xiàn)網(wǎng)上這方面的資料較少,所以自己來總結下,下面這篇文章主要給大家介紹了關于React學習筆記之列表渲染的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • React中的useEffect useLayoutEffect到底怎么用

    React中的useEffect useLayoutEffect到底怎么用

    這篇文章主要介紹了React中的useEffect useLayoutEffect具體使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • React如何自定義輪播圖Carousel組件

    React如何自定義輪播圖Carousel組件

    這篇文章主要介紹了React如何自定義輪播圖Carousel組件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 通過React-Native實現(xiàn)自定義橫向滑動進度條的 ScrollView組件

    通過React-Native實現(xiàn)自定義橫向滑動進度條的 ScrollView組件

    開發(fā)一個首頁擺放菜單入口的ScrollView可滑動組件,允許自定義橫向滑動進度條,且內部渲染的菜單內容支持自定義展示的行數(shù)和列數(shù),在內容超出屏幕后,渲染順序為縱向由上至下依次排列,對React Native橫向滑動進度條相關知識感興趣的朋友一起看看吧
    2024-02-02
  • ReactNative列表ListView的用法

    ReactNative列表ListView的用法

    本篇文章主要介紹了ReactNative列表ListView的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

榆林市| 淳化县| 宝应县| 湖南省| 西宁市| 汽车| 昂仁县| 金沙县| 旌德县| 腾冲县| 德保县| 林周县| 故城县| 江都市| 饶平县| 百色市| 富宁县| 云南省| 宜阳县| 修水县| 赣州市| 林西县| 泸溪县| 宜章县| 厦门市| 肃宁县| 黄大仙区| 沭阳县| 滨州市| 乌拉特中旗| 桂平市| 梧州市| 集安市| 喀什市| 宁陵县| 永清县| 荆门市| 武山县| 芒康县| 迁安市| 瑞安市|