vue

167 阅读2分钟

 1. 关于数组的操作

当利用索引直接设置数组的某一项时,例如:this.items[indexOfItem] = newValue

当你修改数组的长度时,例如:this.items.length = newLength

以上数组会改变,但是页面dom不会发生变化,只有push/shift等方法起作用,或者

 vue中对数组改变使用this.$set(数组名,下标,值)

1.2  vue双向数据绑定,当数据发生变化后,页面会响应式进行变化,但是如果在实例创建之后添加新的属性到实例上,它不会触发视图更新---比如当我们对数组中操作修改或者添加不起作用,可以使用vue.set.  vue.$set

同理,当页面渲染结束后 ,对象添加某值不会响应式

2.  关于父子组件的传值问题

当父组件传值item时候,子组件使用到父组件的item.left.src时候,可能报错后渲染出来了,可以先使用判断条件

computed:{
leftData(){
return item.left || {}
} }
之后再在标签中使用{{leftData.src}}

或者在props属性中设置默认值

props:{
item:{
type:Object,
default(){
return{
    left:{src:''},
     right:{src:''}
}
}
}
}

3.     关于对props传值的操作

在子组件不能直接操作父组件直接传值过来的数据,建议使用data数据初始化(注意因为传值为数组或对象时候对props进行操作会对父组件数据产生影响)

 当需要对传值过来的数据进行数据操作**************

props:{
bodata:{
    type:Object,
    default(){
    return{
    left:{logo:''},
    right:{logo:''}
    }
    }
}
}     //父组件传值过来

data(){
    return{
    leftData:{}
    rightData:{}
    }

}    //设置初始值

watch:{   //监听获取该传值
    bodata(newVal){
    this.leftData = newVal.left  
    this.rightData = newVal.right        }
}

之后对leftData  和 rightData  进行操作 ,    
在方法中处理数据,
一般计算属性不进行传值,在标签中{{}}进行调用计算属性

methods:{
    more(leftData,rightData){
       reuturn leftData  - rightData
    }
}

{{more(lefeData  , rightData)}}

computed:{
        more(){
            if(this.leftData > this.rightData){    
           return this.leftData - this.rightData  
            //本地data数据进行操作,禁止直接操作props值防止影响父组件数据
      }} 
{{more()}}

4. vue路由跳转刷新

provide /inject 组合   作用是: 允许一个祖先组件向其所有子孙后代注入一个依赖, 无论组件层次有多深,并在其上下游关系成立时间里始终生效

<router-view  v-if="isRouterAlive"></router-view>
provide(){
    return {
        reload:this.reload
}
},
data(){
return{
isRouterAlive:true,
}
},
methods:{
reload(){
 this.isRouterAlive = false;
this.$nextTick(function () {
 this.isRouterAlive = true
}
});
}

inject: ['reload'],
this.reload();

5.关于v-for设置不同的icon与绑定不同的事件

6.获取dom节点实在mounted阶段,ref是定位在有v-if、v-for、v-show中的DOM节点,返回来的只能是undefined,因为在mounted阶段他们根本不存在,就需要调用VUE的全局api : this.$nextTick(() => {})

7.手机上查看vue项目,连接同一网络,查看该电脑上ip,修改为vue上host,手机输入该ip与端口进行连接

8.:title="'当前报告id为' + pdfId" 

9.计算属性可用于快速计算视图(View)中显示的属性。这些计算将被缓存,并且只在需要时更新。注意与watch的区别