react-native 實(shí)現(xiàn)購(gòu)物車(chē)滑動(dòng)刪除效果的示例代碼
購(gòu)物車(chē)的功能基本上電商項(xiàng)目都會(huì)有的,這是一篇關(guān)于react-native的,原生android的已經(jīng)好久沒(méi)寫(xiě)了。記得以前寫(xiě)原生購(gòu)物車(chē)的時(shí)候,遇到過(guò)產(chǎn)品的靈魂質(zhì)問(wèn),為啥iOS的滑動(dòng)刪除可以,android卻那么難實(shí)現(xiàn)的。這個(gè)時(shí)候,我就打開(kāi)微信說(shuō),android的微信版也是長(zhǎng)按進(jìn)行操作,iOS的是滑動(dòng)操作的,兩個(gè)平臺(tái)自帶的系統(tǒng)交互操作是不一樣的。當(dāng)然,最后還是默默的找各種三方庫(kù)去進(jìn)行滑動(dòng)刪除。
rn的項(xiàng)目也是找的網(wǎng)上的一個(gè)三方庫(kù)進(jìn)行列表滑動(dòng)操作的,github地址react-native-swipe-list-view
最基本的使用方法和flatList差不多,data 屬性數(shù)組數(shù)據(jù)源,renderItem 從data中挨個(gè)取出數(shù)據(jù)并渲染到列表中
<SwipeListView
data={this.state.listViewData}
renderItem={this.renderItem}
keyExtractor={this.keyExtractor}
/>
這時(shí)候是不可以左右滑動(dòng)的,就跟普通的flatList效果一樣。加上renderHiddenItem屬性,可以左右滑動(dòng)。renderHiddenItem渲染的就是隱藏的內(nèi)容,隱藏的內(nèi)容位置是通過(guò)flex布局來(lái)控制,下面這個(gè)例子使用橫向布局,通過(guò)space-between將內(nèi)容控制在左右兩邊,形成了左右滑動(dòng)時(shí)出現(xiàn)隱藏內(nèi)容。
//這是左右都可以滑動(dòng)的
renderHiddenItem = (data, rowMap) => {
return <View style={{
flex: 1,
flexDirection: 'row',
justifyContent: 'space-between'
}}>
<Text>Left</Text>
<Text>Right</Text>
</View>
}
我們這邊只需要可以左滑,通過(guò)justifyContent: 'flex-end'屬性將刪除按鈕內(nèi)容置于最右邊,同時(shí)設(shè)置SwipeListView的屬性disableRightSwipe來(lái)禁止右滑操作。
renderHiddenItem = (data, rowMap) => {
return <View style={{
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-end',
}}>
<TouchableOpacity style={{
backgroundColor: '#FF496C',
width: 80,
justifyContent: 'center',
alignItems: 'center'
}}>
<Text style={{color:'#fff'}}>刪除</Text>
</TouchableOpacity>
</View>
}
這個(gè)時(shí)候向左滑,可以看到右邊的刪除按鈕出來(lái)了,但是沒(méi)有一直處于打開(kāi)狀態(tài),還需要添加rightOpenValue={-80}屬性,使其處于打開(kāi)狀態(tài)。
<SwipeListView
disableRightSwipe
data={this.state.listViewData}
renderItem={this.renderItem}
keyExtractor={this.keyExtractor}
renderHiddenItem={this.renderHiddenItem}
rightOpenValue={-80}
/>
另外有一個(gè)需要注意的是,renderItem進(jìn)行列表渲染時(shí),最外層的視圖,官方推薦使用可點(diǎn)擊響應(yīng)觸摸的,而不是<View/>,正常情況是,打開(kāi)了一個(gè)視圖,點(diǎn)其他視圖,默認(rèn)會(huì)關(guān)閉打開(kāi)的那一項(xiàng),如果最外層是<View/>則不會(huì)有這種效果。
//最外層是 TouchableHighlight
renderItem = ({item, index}, rowMap) => {
return <TouchableHighlight
onPress={() => {
}}
underlayColor={'#fff'}>
...
</TouchableHighlight>
}
至此,滑動(dòng)刪除的效果已經(jīng)基本滿(mǎn)足了,后續(xù)就是業(yè)務(wù)邏輯,增刪操作數(shù)據(jù)源刷新頁(yè)面了。

到此這篇關(guān)于react-native 實(shí)現(xiàn)購(gòu)物車(chē)滑動(dòng)刪除效果的示例代碼的文章就介紹到這了,更多相關(guān)react-native 滑動(dòng)刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
React?中使用?RxJS?優(yōu)化數(shù)據(jù)流的處理方案
這篇文章主要為大家介紹了React?中使用?RxJS?優(yōu)化數(shù)據(jù)流的處理方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
基于react框架使用的一些細(xì)節(jié)要點(diǎn)的思考
下面小編就為大家?guī)?lái)一篇基于react框架使用的一些細(xì)節(jié)要點(diǎn)的思考。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
react 項(xiàng)目 中使用 Dllplugin 打包優(yōu)化技巧
在用 Webpack 打包的時(shí)候,對(duì)于一些不經(jīng)常更新的第三方庫(kù),比如 react,lodash,vue 我們希望能和自己的代碼分離開(kāi),這篇文章主要介紹了react 項(xiàng)目 中 使用 Dllplugin 打包優(yōu)化,需要的朋友可以參考下2023-01-01
React中props驗(yàn)證不足的問(wèn)題及解決方案
在?React?開(kāi)發(fā)中,props?是組件間通信的重要方式,通過(guò)?props,父組件可以向子組件傳遞數(shù)據(jù)和回調(diào)函數(shù),然而,如果對(duì)?props?的驗(yàn)證不足,可能會(huì)導(dǎo)致類(lèi)型錯(cuò)誤、運(yùn)行時(shí)錯(cuò)誤或難以調(diào)試的問(wèn)題,本文將探討?React?中?props?驗(yàn)證不足的常見(jiàn)問(wèn)題,并提供解決方案2025-03-03
npx create-react-app xxx創(chuàng)建項(xiàng)目報(bào)錯(cuò)的解決辦法
這篇文章主要介紹了npx create-react-app xxx創(chuàng)建項(xiàng)目報(bào)錯(cuò)的解決辦法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
React組件中使用JSON數(shù)據(jù)文件的方法詳解
要在 React 組件中使用 JSON 數(shù)據(jù),有多種方法,這篇文章主要為大家詳細(xì)介紹了五個(gè)常見(jiàn)的方法,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下2024-01-01

