vue的一些不常用知识点

使用vite创建vue3项目:

npm init vite@latest myvue3 --template vue

v-bind绑定属性,可以动态的绑定标签属性: 

<span v-bind:[attributeName]="attr" ></span>

...

data(){
    return{
        attributeName:'id',
        attr:'d1'
    }
},

@动态绑定事件:

<span @[mouseEvent]="event" ></span>

...

data(){
    return{
        mouseEvent:'mouseenter',
    }
},
methods:{
    event(){}    
}

class的绑定方式,可以控制多个样式:

<div :class="classObj"></div>
...
<style scoped>
    .active{
        color:red;
    }
    .hello{
        font-size:16px
    }
</style>
...
data(){
    return {
        classObj:{
            active:true,
            hello:true
        },
    }
}

数组的形式(不常用): 

<div :class="[activeClass,errorClass]"></div>
...
data(){
    return {
        classObj:{
            activeClass:'active',
            errorClass:'text-danger'
        },
    }
}
...
<style scoped>
.active{
      background-color: purple;
      width:100px;
      height: 100px;
}
.errorClass{
  color: red;
}
</style>

style的绑定方式(类似class用法):

<div :stle="[styleObj,{fontSize:'16px'}]"></div>
...
data(){
    return {
        styleObj:{
            bgColor:"pink"
        },
    }
}

v-if支持在template中使用 ,v-show不支持。

v-for不仅可以循环遍历数组,还可以遍历对象:

<div v-for="(name,value,index) in obj" :key="index"></div>

数组push方法可以添加多个元素:

arr.push(7,8,9)

数组splice,三个参数,第一个为删除的起始下标,第二个是删除几个元素,之后的参数,可以替换被删除的参数。

arr.splice(1,2,7,8,9) //从下标1开始删除2个元素,并将7,8,9插入删除的部分

多事件处理,可以传入多个方法 绑定多个函数逗号分隔,且要加调用的括号:

<div @click="addCounter(5),addAge()"></div>

v-model原理:v-bind单向绑定数据,@input修改变量,实现双向绑定

v-model修饰符:

<input type='text' v-model.trim="msg"/> //去除表单里的前后空格
<input type='text' v-model.number="msg"/> //将表单的数据转为number类型
<input type='text' v-model.lazy="msg"/> //表单的数据失去焦点时才触发改值的操作

注册全局组件:

Vue.component("demo1", {
  template: "<h3>just do it</h3>",
});

 具名插槽的写法:

<slot name="test" >默认内容</slot> //如果不传东西则可以设置默认内容

<template v-slot:test></template> //v-slot只能写在template上




<slot name="test" :list="list"></slot> //传值

<template v-slot:test="slotProps">{{slotProps.list}}</template> //slotProps就是传来的值

 provider和inject,传递响应式:

provider(){
    return {
        obj:this.obj, //通过浅拷贝达到响应式
        message:()=>this.message //用函数的形式返回一个响应式数据
    }
}

inject:["obj","message"] //这里message不再是变量而是函数,使用时要加小括号,调用函数,可配合计算属性使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goat恶霸詹姆斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值