首页 > 其他分享 >vue常用的指令用途和注意事项

vue常用的指令用途和注意事项

时间:2024-11-05 14:15:44浏览次数:5  
标签:vue default bind 绑定 指令 export 注意事项 元素 class

vue常用的指令用途和注意事项

v-bind

  • 用途:动态绑定元素的属性或特性。
  • 代码:
<template>
  <img v-bind:src="imageSrc" alt="Vue logo">
  <a v-bind:href="linkUrl">Click Here</a>
</template>

<script>
export default {
  data() {
    return {
      imageSrc: 'https://vuejs.org/images/logo.png',
      linkUrl: 'https://vuejs.org'
    };
  }
};
</script>
  • 注意事项:
    • v-bind 常用于绑定 HTML 属性,如 src、href、class 等。
    • 简写形式 v-bind:attr 可以用冒号 : 来代替,如 :href=“linkUrl”。

v-if

  • 用途:条件渲染,根据表达式的布尔值决定是否渲染元素。
  • 代码:
<template>
  <div v-if="isVisible">This content is visible!</div>
  <button @click="isVisible = !isVisible">Toggle Visibility</button>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  }
};
</script>
  • 注意事项:
    • v-if 会完全销毁和重新创建 DOM 元素,因此不适用于频繁切换的场景。
    • 如果需要频繁切换元素的显示隐藏,使用 v-show 可能会更高效。

v-for

  • 用途:循环渲染列表。
  • 代码:
<template>
  <ul>
    <li v-for="item in items" :key="item.id">{{ item.name }}</li>
  </ul>
</template>
<script>
export default {
  data() {
    return {
      items: [
        { id: 1, name: 'Item 1' },
        { id: 2, name: 'Item 2' },
        { id: 3, name: 'Item 3' }
      ]
    };
  }
};
</script>
  • 注意事项:
    • 使用 :key 为每个循环元素提供唯一标识符,以提高渲染性能。
    • v-for 循环的数组或对象必须是响应式的。

v-model

  • 用途:创建双向数据绑定,常用于表单输入。
  • 代码:
<template>
  <input v-model="message" placeholder="Type something">
  <p>Your message: {{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    };
  }
};
</script>
  • 注意事项:
    • v-model 默认绑定 value 属性和 input 事件,适用于表单控件。
    • 自定义组件使用 v-model 时,需要在组件内部通过 model 属性定义绑定的 prop 名称和事件。

v-show

  • 用途:条件渲染,根据表达式的布尔值控制元素的 display 样式。
  • 代码:
<template>
  <div v-show="isVisible">This content is visible!</div>
  <button @click="isVisible = !isVisible">Toggle Visibility</button>
</template>

<script>
export default {
  data() {
    return {
      isVisible: true
    };
  }
};
</script>
  • 注意事项:
    • v-show 不会销毁元素,而是通过修改元素的 display 属性来显示或隐藏。
    • 如果需要频繁切换显示/隐藏,使用 v-show 性能较好,但首次渲染时会多一些开销。

v-bind:class 和 v-bind:style

  • 用途:动态绑定元素的 class 或 style。
  • 代码:
<template>
  <div :class="{'active': isActive, 'text-red': isRed}" :style="{ color: activeColor, fontSize: fontSize + 'px' }">
    This is a dynamic style and class binding example.
  </div>
  <button @click="toggleState">Toggle State</button>
</template>
<script>
export default {
  data() {
    return {
      isActive: true,
      isRed: false,
      activeColor: 'blue',
      fontSize: 16
    };
  },
  methods: {
    toggleState() {
      this.isActive = !this.isActive;
      this.isRed = !this.isRed;
    }
  }
};
</script>
  • 注意事项:
    • 使用对象语法,能够根据条件动态地为元素添加多个 class 或 style。
    • 可以使用数组语法绑定多个 class。

v-on

  • 用途:绑定事件监听器。
  • 代码:
<template>
  <button @click="handleClick">Click Me</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      alert('Button clicked!');
    }
  }
};
</script>
  • 注意事项:
    • 可以使用 @ 来简写 v-on,例如 @click 等。
    • 可以为事件传递修饰符,例如 .stop、.prevent 等。

v-slot

  • 用途:用于自定义组件的插槽。
  • 代码:
<template>
  <base-layout>
    <template v-slot:header>
      <h1>Welcome to Vue.js</h1>
    </template>
  </base-layout>
</template>
<script>
export default {
  components: {
    BaseLayout: {
      template: `
        <div>
          <slot name="header"></slot>
        </div>
      `
    }
  }
};
</script>
  • 注意事项:
    • v-slot 用于绑定具名插槽,允许在父组件中自定义子组件的内容。
    • 可以通过 v-slot 语法进行命名插槽的传递。

总结

指令用途备注
v-bind动态绑定元素属性常用于绑定 class、style、href 等
v-if条件渲染,显示或隐藏元素会销毁和重新创建 DOM 元素
v-for列表渲染使用 :key 提升渲染性能
v-model双向数据绑定,表单输入自定义组件使用时需要 model 属性
v-show条件渲染,控制元素的 display 样式不销毁元素,仅改变样式
v-bind:class动态绑定 CSS 类支持对象和数组语法
v-bind:style动态绑定样式支持对象和数组语法
v-on事件监听支持修饰符,如 .stop、.prevent 等
v-slot自定义插槽用于自定义组件插槽的内容传递

标签:vue,default,bind,绑定,指令,export,注意事项,元素,class
From: https://blog.csdn.net/2301_80346402/article/details/143503406

相关文章

  • Vue代码一定要避开这几个错误写法
    这里写目录标题不适当使用v-if和v-show直接修改props在计算属性中执行异步操作在mounted中直接访问DOM元素在data中定义复杂对象在模板中使用复杂逻辑未处理的错误和异常不使用key属性不适当使用v-if和v-showv-if会在DOM中添加或移除元素,而v-show只是切换元素的CSS属......
  • vue前端项目部署的一点小tip
    一个典型的前后端分离项目,前端分用户入口和管理员入口,一般希望这样部署:https://mydomain.com/   普通用户入口https://mydomain.com/admin/ 管理员入口关键就是在vite.config.ts里要这么指定base:base:'./'这样build出来的文件,不管放在哪个项目下面都可以正常运行,......
  • Vue3 iOS微信JSSDK授权签名错误及图片选择兼容
    iOS微信JSSDK授权签名错误及图片选择兼容一、项目概述二、iOS签名错误invalidsignature三、iOS选择图片转载请注明出处:https://blog.csdn.net/hx7013/article/details/143502680一、项目概述Vue3+Vite+Vue-Router4+JS-SDK1.6由于之前开发调试都是在......
  • 你肯定不知道:Vue多文件上传时拖放操作的优雅处理
            多文件上传是Vue应用的常见操作。操作要求:(1)允许反复拖放多个文件到待上传区域(2)自动过滤掉重复拖放的文件(3)拖放后,形成待上传文件列表的简易缩略图(4)双击文件名,可移去某个文件。具体效果,如下图所示。        我们可将拖放操作设计为一个插件指令dragDro......
  • vue项目接入CDN域名:你可能会碰到的问题
    背景项目需要接入cdn加速域名,但只能在生产环境验证。所以发版之前本地先准备好cdn的包,然后发版的时候部署到生产环境,结果发现,点击菜单后页面的URL不对了,静态资源加载是可以的。本来页面URL是这样的:test.com/app/xpg/ind…但点击菜单后,把cdn的域名加上去了:test.com/https://c......
  • 基于SpringBoot + Vue的在线学习平台(角色:学生、教师、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot + Vue的社区智慧医疗养老系统(角色:老人、老人家属、管理员)
    文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言......
  • 基于SpringBoot+Vue的可盈保险合同管理系统设计与实现毕设(文档+源码)
            目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的可盈保险合同管理系统,项目源码请点击文章末尾联系我哦~目前有各类......
  • 基于SpringBoot+Vue的纺织品企业财务管理系统设计与实现毕设(文档+源码)
            目录一、项目介绍二、开发环境三、功能介绍四、核心代码五、效果图六、源码获取:        大家好呀,我是一个混迹在java圈的码农。今天要和大家分享的是一款基于SpringBoot+Vue的纺织品企业财务管理系统,项目源码请点击文章末尾联系我哦~目前有各......
  • (开题报告)django+vue超市销售系统管理源码+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于超市销售管理系统的研究,现有研究多侧重于传统管理模式或单一功能模块的优化。例如,一些研究主要以提升收银效率或库存管理为主[1][......