zoukankan      html  css  js  c++  java
  • 解决uni-app props 传递数组修改后不能使用问题

    1.子组件页面结构

    //NoticesMarquee 组件
    <view v-for="(item, index) in tempList" :key="index" >
            {{item.Title}}
    </view>

    2.父组件中使用

    在父组件中引用子组件并传递值。

    <template>
        <view>
               <!--使用子组件  -->
            <notices-marquee  :items="noticesList" ></notices-marquee>
        </view>
    </template>
    
    <script>
            import NoticesMarquee from '@/components/index/NoticesMarquee'
        export default {
            components:{
                NoticesMarquee
            },
            data() {
                return {
                    noticesList: [{
                            Title: '4874545454554545454545454',
                            Id: 2
                        },
                        {
                            Title: '7888844844456454564564565465656',
                            Id: 1
                        },
                        {
                            Title: '78947898526665656+56+5+656',
                            Id: 3
                        },
                    ],
                };
            }
        }
    </script>
    <style>
    
    </style>

    3.问题描述

    3.1 问题概述:

    现象为:在setTimeout()中修改值,但是对 items这个数组并不起作用,即修改后的数组与原来一致,并没有达到修改数组的效果,代码如下:

    export default {
            props: ['items'],
            methods: {
            showMarquee: function() {
                    let _this = this;
                    setTimeout(function() {
                        _this.items.push(_this.items[0]);
                        _this.items.shift()
                    }, 500)
                },
            },
        }

    3.1 解决办法:

    使用中间临时数组(tempList(),在created()时就开始将值传递给临时数组,防止出现延时情况,后续单独操作临时数组即可。

    export default {
            props: ['items'],
            data() {
                return {
                    tempList: []
                }
            },
            methods: {
                showMarquee: function() {
                    let _this = this;
                    setTimeout(function() {
                        _this.tempList.push(_this.tempList[0]);
                        _this.tempList.shift()
                    }, 500)
                },
            },
            created() {
                this.tempList = this.items
            }
        }

    推荐是最好的支持,关注是最大的鼓励。亲爱的朋友,很荣幸在园子里遇到您,希望能与您一起学习~~~。

  • 相关阅读:
    (一)Kubernetes 系统基础
    Linux-网络RAID技术DRBD
    Linux-存储服务之NFS
    ELK快速入门(五)配置nginx代理kibana
    ELK快速入门(四)filebeat替代logstash收集日志
    ELK快速入门(三)logstash收集日志写入redis
    渗透测试工具集合
    CVE-2019-0708(非蓝屏poc)远程桌面代码执行漏洞复现
    代码审计-thinkphp3.2.3框架漏洞sql注入
    渗透测试-端口复用正向后门
  • 原文地址:https://www.cnblogs.com/wfaceboss/p/10722458.html
Copyright © 2011-2022 走看看