1***@qq.com
1***@qq.com
  • 发布:2021-03-30 16:33
  • 更新:2021-06-16 16:54
  • 阅读:909

关于nvue的数据重新赋值问题

分类:nvue

整个nvue代码:

<template>  
    <view class="page">  
        <cus-gap height="100"></cus-gap>  
        <view class="search z-flex">  
            <uni-search-bar :radius="50" placeholder="输入关键字进行搜索" @input="onSearch" :cancelButton="false"></uni-search-bar>  
        </view>  
        <list class="list" :show-scrollbar="false">  
            <cell class="item z-flex z-row-center" v-for="item in selectList" :key="item.id" @click="select(item)">  
                <text :class="{'z-color': $store.state.store && $store.state.store.id === item.id}" class="z-font-xl">美猴王{{ item.id }}</text>  
            </cell>  
        </list>  
    </view>  
</template>  

<script>  
    const app = getApp().globalData  
    export default {  
        data () {  
            return {  
                list: [],  
                selectList: []  
            }  
        },  
        onLoad () {  
            this.getList()  
        },  
        methods: {  
            /**  
             * 搜索  
             */  
            onSearch (value) {   
                let len = this.list.length  
                let arr = []  
                if (value) {  
                    for (var i = 0; i < len; i++) {  
                        if (this.list[i].name.match(value)) {  
                            arr.push(this.list[i])  
                        }  
                    }  
                    this.selectList = arr  
                } else {  
                    this.selectList = this.list  
                }  
            },  
            /**  
             * 获取门店列表  
             */  
            getList () {  
                app.$z.loading.show('加载中')  
                app.$z.api.getStoreList().then(res => {  
                    if (res.code == 200) {  
                        this.list = res.data  
                        this.selectList = res.data  
                    }  
                    this.loading = false  
                })  
            },  
            /**  
             * 选中门店  
             */  
            select (item) {  
                let store = {  
                    name: 'store',  
                    value: item  
                }  
                this.$store.commit('$commit', store)  
                uni.switchTab({  
                    url: '/pages/mine/index'  
                })  
            }  
        }  
    }  
</script>  

<style scoped lang="scss">  
    .search {  
        padding: 0 30rpx;  
        position: fixed;  
        top: 0;  
        width: $z-width;  
        height: 100rpx;  
    }  

    .list {  
        flex: 1;  

        .item {  
            height: 100rpx;  
            background-color: #ffffff;  
            border-bottom: 1rpx solid $z-border-color;  
        }  
    }  
</style>

问题描述:
就是在nvue页面中,对属性重新赋值的时候,页面重新渲染会把原来存在的一个一个的移除掉,比如说一个arr数组原来有50条数据,然后我把arr这个数组变成只有一条数据了,然后列表就会把另外49条数据一个一个删除,造成的体验很不好,有什么办法解决吗。

2021-03-30 16:33 负责人:无 分享
已邀请:
1***@qq.com

1***@qq.com (作者)

附件是演示的视频

1***@qq.com

1***@qq.com (作者)

大佬求助啊啊啊

1***@qq.com

1***@qq.com (作者)

没有人吗

1***@qq.com

1***@qq.com (作者)

没人吗,大佬求助啊

  • Zzz1012

    好兄弟 问题解决了吗

    2021-06-16 17:08

Zzz1012

Zzz1012

同问!

  • 1***@qq.com (作者)

    解决了。在渲染的数据使用v-if="变量flag",如果你需要重新渲染,那就把变量变量flag设置为false,然后使用setTimeout(() =>{ 变量flag = true }, 100),这样可以解决大量数据重新渲染赵成一条一条的变更卡顿的问题。

    2021-08-16 15:32

  • Zzz1012

    回复 1***@qq.com: 好的感谢

    2021-08-17 15:14

该问题目前已经被锁定, 无法添加新回复