vue中的数据处理

父组件向子组件传值

  • prop

比如说,父组件中data有个fatherwaterList对象需要传到子组件riskDrawer里:
父组件要写的:

< riskDrawer  :childwaterList="fatherwaterList" />

子组件要写的:

props:{
	childwaterList:Object
}

父组件里咋用的fatherwaterList子组件里就咋用childwaterList

  • ref
 <riskDrawer  ref="riskDrawerDom"  :waterList="waterList" />

在method里面:

methods: {
    openRiskDrawer(data) {
        this.$nextTick(()=>{
            this.$refs.riskDrawerDom.handleShow(data)
        })
    },

调用openRiskDrawer这个方法的时候,可以通过操作this.$ref来操作riskDrawer,使它调用handleshow(),感觉跟id差不多

computed

computed跟data差不多,都是存的数据

computed :{
 titleObject :function(){
            switch(this.displayTable){
                case 0 :
                    return {
                        title:"标题1",
                        total:this.waterList.riskNum,
                    }
                case 1 :
                    return {
                        title:"标题2",
                        total:this.waterList.riskClearRate,
                    }
                case 2 :
                    return {
                        title:"标题3",
                        total:this.waterList.riskConverEventRate,
                    }
            }
        },

调用方式跟data一样,都是titleObject.title,titleObject.total这样,这算是set
get:
首先在data里面定义titleObject,
然后在computed里面写
titleobject :{
set(newvalue){
this.myvalue = newvalue
return this.myvalue
}
}
差不多吧,反正用到get再搜

computed和method的区别

值改变的时候,computed自动更新,method不会,得自己调用

watch

当msg的值变化的时候,watch会监听到而且执行

const vm = new Vue({
  el:'#app',
  data:{
    msg:""
  },
  watch:{
    //被偵聽的資料名稱(新值,舊值){}
    msg(newMsg,oldMsg){
      console.log('从'newMsg'变成'oldMsg)
    }
  }
})

watch还有一些很牛牛的实例方法
比如说:deep
可以用来侦听对象里的属性变化,如果不用deep,在默认情况下只能监听到对对象重新赋值这种,比如说this.msg={}
如果想要监听obj对象中的msg属性的值改变,就要用到deep属性,deep:true

const vm = new Vue({
  el:'#app',
  data:{
    obj:{
    	msg:''
	}
  },
  watch:{
	obj: {
    handler(newName, oldName) {
      console.log('obj.a changed');
    },
    immediate: true,
    deep: true
  }
  }
})

这里面的handler方法是默认绑的,没懂
再比如说 immediate
默认情况下,watch的handler函数只有在监听的属性改变时才会被执行,但如果我们想让watch一被声明就执行handler的话(我感觉像dowhile跟while的区别),就要用到immediate属性。immediate: true

JSON.parse() 和 JSON.stringify()

parse():用于将一个字符串解析成一个json对象,例如

var str = '{"name":"jack","age":"18"}';
JSON.parse(str);

结果是:

Object {
	name:"jack",
	age:"18"
}

stringify():从一个对象中解析出字符串,例如

var obj = {
	a:1,
	b:2
};
JSON.stringify(obj);

结果是:

"{"a":1,"b":2}"

那么JSON.parse(JSON.stringify(obj))是干啥用的呢,深拷贝

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue进行数据处理和遍历时,可以采取一些优化方法来提高性能和效率。下面是一些常见的优化技巧: 1. 使用v-for的key属性:在使用v-for指令进行列表渲染时,为每个项设置唯一的key属性。这样Vue可以跟踪每个项的变化,提高渲染效率。 2. 避免在模板进行复杂的计算:尽量避免在模板进行复杂的计算或方法调用。最好在computed属性数据进行处理,然后在模板直接引用computed属性。 3. 数据分页和懒加载:如果列表数据非常庞大,可以考虑进行数据分页和懒加载。只渲染当前可见区域的数据,减少渲染的负担。 4. 使用Object.freeze():对于不会被修改的数据,可以使用Object.freeze()方法冻结对象,防止不必要的监测和更新操作。 5. 合理使用v-if和v-show:根据具体情况选择使用v-if还是v-show。v-if适用于频繁切换条件的情况,而v-show适用于频繁切换显示/隐藏的情况。 6. 避免过多的watcher:当数据变化时,Vue会触发watcher来更新视图。如果有大量的watcher存在,会降低性能。可以考虑使用computed属性或手动优化数据流,减少watcher的使用。 7. 使用虚拟滚动:对于大型列表,可以考虑使用虚拟滚动技术,只渲染可见区域的内容,降低渲染的负担。 这些是一些常见的Vue数据处理和遍历优化方法,根据具体情况选择适合的优化策略可以提高应用的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值