【Vue3】2-8 : 条件渲染与列表渲染及注意点

本书目录:点击进入

一、条件渲染 - v-if = 表达式

1.1 真值与假值

1.2  v-if ,v-else-if ,v-else

1.3  实战:isShow1 为真值时 显示 bbbbb

>  代码

>  效果

二、列表渲染 - v-for

2.1 渲染 - 数组

>  代码

>  效果

2.2 渲染 - 对象

>  代码

>  效果

2.3 渲染 - 整数

 >  代码

>  效果

2.3 渲染 - 文本(字符串)

 >  代码

>  效果

三、v-if 和 v-for 注意点

3.1 列表渲染需要添加key属性

作用: 为了防止渲染错位

 >  代码

>  效果

3.2 v-if 和 v-for 尽量不要一起使用

作用: 防止v-if 无法读取元素值

 >  代码:保留id能被2整除的项

>  效果

3.3 template标签起到的作用 

作用: 编组,替代无用div

 >  代码

>  效果


一、条件渲染 - v-if = 表达式

  • 表达式 = truthy真值 时 渲染一块内容

1.1 真值与假值

  • falsy 假值 :(即 false、0、-0、0n、""、null、undefined 和 NaN

  • truthy真值非假值均为真值

1.2  v-if ,v-else-if ,v-else

  • 三者可以搭配使用

  • 中间不能插入其它代码,否则会报错

1.3  实战:isShow1 为真值时 显示 bbbbb

>  代码

<body>
  <div id="app">
    <div v-if="isShow">aaaaa</div>
    <div v-else-if="isShow1">bbbbb</div>
    <div v-else>ccccc</div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          isShow: 0,
          isShow1: 2,
        }
      }
    }).mount('#app');

  </script>
</body>

>  效果

二、列表渲染 - v-for

  • 数组渲染列表

  • item in items 形式

  • items:源数组

  • item :数组元素的别名

2.1 渲染 - 数组

>  代码

<body>
  <div id="app">
    <div v-for="item, index in list">{
  { item }}, {
  { index }}</div>
    <div v-for="item in list">{
  { item }}</div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          list: ['a', 'b', 'c']
        }
      }
    }).mount('#app');


    setTimeout(()=>{
      //vm.list.push('d');
      vm.list[1] = 'd';
    }, 2000) 

  </script>
</body>

>  效果

2.2 渲染 - 对象

>  代码

<body>
  <div id="app">
    <div v-for="value in info">{
  { value }}</div>
    <div v-for="value, key in info">{
  { value }}, {
  { key }}</div>
    <div v-for="value, key, index in info">{
  { value }}, {
  { key }}, {
  { index }}</div>

  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          info: { username: 'xiaoming', age: 20 }
        }
      }
    }).mount('#app');

  </script>
</body>

>  效果

2.3 渲染 - 整数

 >  代码

<body>
  <div id="app">
    <div v-for="item in num">{
  { item }}</div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          num: 10
        }
      }
    }).mount('#app');

  </script>
</body>

>  效果

2.3 渲染 - 文本(字符串)

 >  代码

<body>
  <div id="app">

        <div v-for="item in text">{
  { item }}</div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          text: 'hello'
        }
      }
    }).mount('#app');

  </script>
</body>

>  效果

三、v-if 和 v-for 注意点

3.1 列表渲染需要添加key属性

作用: 为了防止渲染错位

 >  代码 :key="item.id"

<body>
  <div id="app">
    <div v-for="item, index in list" :key="item.id">{
  { item.text }}, {
  { index }}, <input type="text"></div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          list: [
            { id: 1, text: 'a' },
            { id: 2, text: 'b' },
            { id: 3, text: 'c' },
          ]
        }
      }
    }).mount('#app');

    setTimeout(()=>{
      vm.list.unshift({ id: 4, text: 'd' });
    }, 3000)

  </script>
</body>

>  效果

3.2 v-if 和 v-for 尽量不要一起使用

作用: 防止v-if 无法读取元素值

 >  代码:保留id能被2整除的项

<body>
  <div id="app">
    <div v-for="item, index in oddList" :key="index">{
  { item.text }}, {
  { index }}, <input type="text"></div>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          list: [
            { id: 1, text: 'a' },
            { id: 2, text: 'b' },
            { id: 3, text: 'c' },
          ]
        }
      },
      computed: {
        oddList(){
          return this.list.filter((v)=> v.id%2 === 0);
        }
      }
    }).mount('#app');

    setTimeout(()=>{
      vm.list.unshift({ id: 4, text: 'd' });//向集合的头部添加元素
    }, 3000)
  </script>
</body>

>  效果

3.3 template标签起到的作用 

作用: 编组,替代无用div

 >  代码

<body>
  <div id="app">
    <template v-if="isShow">
      <div>aaaa</div>
      <div>bbbb</div>
    </template>
  </div>
  <script>

    let vm = Vue.createApp({
      data(){
        return {
          isShow: true
        }
      }
    }).mount('#app');

  </script>
</body>

>  效果

相关推荐

  1. vue3-条件渲染

    2024-01-12 16:42:03       42 阅读
  2. vue 条件渲染

    2024-01-12 16:42:03       42 阅读
  3. vue--条件渲染

    2024-01-12 16:42:03       29 阅读
  4. Vue列表渲染

    2024-01-12 16:42:03       53 阅读
  5. vue-列表渲染

    2024-01-12 16:42:03       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-12 16:42:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-12 16:42:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-12 16:42:03       87 阅读
  4. Python语言-面向对象

    2024-01-12 16:42:03       96 阅读

热门阅读

  1. 海外動態IP在價格監控方面的應用 - okey proxy

    2024-01-12 16:42:03       56 阅读
  2. R语言【base】——sample():随机取样和排列

    2024-01-12 16:42:03       49 阅读
  3. 游戏服务器开发知识付费时代到来了

    2024-01-12 16:42:03       64 阅读
  4. 【mysql】有关mysql查询隐式类型转换的问题

    2024-01-12 16:42:03       60 阅读
  5. LinkedList和ArrayList

    2024-01-12 16:42:03       54 阅读
  6. git远程仓库配置

    2024-01-12 16:42:03       60 阅读