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
            }
        }

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

  • 相关阅读:
    PHP“Cannot use object of type stdClass as array”
    JS简单循环遍历json数组的方法
    省市区、民族下拉列表框
    java 代码获取视频时长
    CentOs 相关
    曾经遇过的sql问题
    在线分享代码
    ssm 数据库连接池配置
    代码片段
    java 常见问题
  • 原文地址:https://www.cnblogs.com/wfaceboss/p/10722458.html
Copyright © 2011-2022 走看看