美文网首页react手机端
React Native 之侧滑删除

React Native 之侧滑删除

作者: 安静守护你 | 来源:发表于2018-12-29 15:11 被阅读3289次

    前言

    项目需求中需要使用到侧滑删除的功能,但是项目整体使用的都是React Native,在RN提供的组件中的FlatListSectionList都没有提供侧滑删除的功能选项,无奈之下,只能使用三方的了。

    但是经过多个三方的测试实验,很多侧滑删除都不尽如人意,要么是列表每个item都能够侧滑显示删除按钮(不能控制在Scrollview滑动或者其他item滑动的时候自动闭合),要么就是卡顿非常明显。

    经过多方查找发现React Native本身就封装的有侧滑删除的功能,只不过没有对外开放。

    正文

    React Native本身封装的侧滑删除位置在下面这个路径下:

    ./node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableFlatList
    

    单纯的看文件目录,从文件命名来看,也能看的出来封装是从下往上的,从最开始的item封装在SwipeableRow.js文件下,到最后集成自FlatList的最终文件SwipeableFlatList.js

    文件目录

    挨个打开文件看了看,哎。。。我实在是看不大懂,只有偶尔部分能够懂那么点。

    不过如果单纯的使用的话,仅仅看一下最终的封装文件就差不多了。

    具体使用

    效果图:

    效果图

    部分代码如下:

    import SwipeableFlat from '../node_modules/react-native/Libraries/Experimental/SwipeableRow/SwipeableFlatList';
    
    render() {
            return(
                <View style = {styles.container}>
                    <SwipeableFlat
                        data = {[
                            {title : '1'},
                            {title : '2'},
                            {title : '3'},
                            {title : '4'},
                            {title : '5'},
                        ]}
                        renderItem = {this._renderItem1.bind(this)}
                        maxSwipeDistance = {100}
                        renderQuickActions = {this._getQuickActions.bind(this)} />
                </View>
            );
        };
    
        _renderItem1({item}) {
            return(
                <View>
                    <View style = {styles.content}>
                        <Text>我是item {item.title}</Text>
                    </View>
                </View>
            );
        }
    
        _getQuickActions() {
            return(
                <View style = {styles.quickAContent}>
                    <TouchableOpacity
                        onPress = {() => {
                            Alert.alert('确定要删除吗?');
                        }} >
                        <View style = {styles.quick}>
                            <Text style = {styles.delete}>删除</Text>
                        </View>
                    </TouchableOpacity>
                </View>
            );
        }
    

    后话

    关于三方的这些东西使用倒是很简单,尤其是官方封装的,代码层次很多都是我们值得学习的,想要提高自己的编码水平以及技术(不限于React Native),那就多多的看大神的封装代码,学习其优点,不仅可以巩固自己的基础知识,还能提高自己的编码水平。

    多拿别人封装好的代码来研究分析

    相关文章

      网友评论

        本文标题:React Native 之侧滑删除

        本文链接:https://www.haomeiwen.com/subject/skbmkqtx.html