vue笔记

1.默认事件形参

事件对象: 在组件的方法中,Vue 会自动传递一个事件对象给事件处理函数。这个事件对象是标准的 JavaScript 事件对象,它包含了事件的所有信息。

<template>
  <button @click="handleClick">Click me</button>
</template>

<script>
export default {
  methods: {
    handleClick(event) {
      console.log(event.type); // "click"
      console.log(event.target); // 触发事件的元素
    }
  }
}
</script>

2.修饰符:

.stop: 阻止事件冒泡。等同于在 JavaScript 中调用 event.stopPropagation()

<template>
  <div @click.stop="handleClick">
    <button>Click me</button>
  </div>
</template>

 .prevent: 阻止事件的默认行为。等同于在 JavaScript 中调用 event.preventDefault()

<template>
  <form @submit.prevent="handleSubmit">
    <button type="submit">Submit</button>
  </form>
</template>

 .self: 只当事件在该元素自身触发时才触发回调,不冒泡的情况下不会触发。

<template>
  <div @click.self="handleClick">
    <button>Click me</button>
  </div>
</template>

3. 使用 v-on 指令

v-on 是 Vue.js 中用于绑定事件监听器的指令。你可以在模板中直接使用它来绑定 DOM 事件到组件的方法。

<template>
  <button v-on:click="handleClick">Click me</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Button was clicked');
    }
  }
}
</script>

在 Vue.js 2.x 中,v-on 可以简写为 @ 符号,这样代码更简洁。

<template>
  <button @click="handleClick">Click me</button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Button was clicked');
    }
  }
}
</script>

 4.双向数据绑定

Vue.js 使用 v-model 指令来实现双向数据绑定。v-model 通常用在表单输入和组件上,以便于创建双向绑定的数据。在表单元素中,v-model 可以自动处理数据的双向绑定。

<template>
  <input v-model="message" placeholder="Edit me">
  <p>Message is: {{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

5.绑定文本与HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <div id="app">
        <p v-text = "link1"></p>
        <p v-html = "link2"></p>
    </div>
    <script>
        const {createApp} = Vue;
        createApp({
            data() {
                return {
                    link1: "<a href='https://www.baidu.com'>百度</a>",
                    link2: "<a href='https://www.baidu.com'>百度</a>"
                }
            }
        }).mount('#app')
    </script>
</body>
</html>

6.绑定clss和style属性

在 Vue.js 中,你可以通过几种方式动态绑定元素的 classstyle 属性。

如何在同一个组件中同时动态绑定 classstyle

isActive: 用于控制 active 类和 activeColor 样式。

error: 用于控制 text-danger 类和 errorColor 样式。

fontSize: 用于控制字体大小的 style

activeColor: 激活状态下的文本颜色。

errorColor: 错误状态下的文本颜色。

<template>
  <div
    :class="classObject"
    :style="styleObject"
    @click="toggleActive"
  >
    Toggle Active
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: false,
      error: false,
      fontSize: 16,
      activeColor: 'blue',
      errorColor: 'red'
    };
  },
  computed: {
    // 使用计算属性来合并类对象
    classObject() {
      return {
        active: this.isActive,
        'text-danger': this.error,
        'text-large': this.fontSize > 14
      };
    },
    // 使用计算属性来合并样式对象
    styleObject() {
      return {
        color: this.isActive ? this.activeColor : this.errorColor,
        fontSize: this.fontSize + 'px'
      };
    }
  },
  methods: {
    toggleActive() {
      this.isActive = !this.isActive;
      this.error = !this.error;
    }
  }
};
</script>

<style>
.active {
  background-color: yellow;
}
.text-danger {
  font-weight: bold;
}
.text-large {
  font-size: 18px;
}
</style>

7.条件渲染

 在 Vue.js 中,条件渲染是一种常见的需求,它允许你根据数据的值来决定是否渲染某个元素或组件。Vue 提供了几种指令来实现条件渲染,包括 v-ifv-elsev-else-ifv-show

<template>
  <div>
    <!-- 使用 v-if, v-else-if, v-else 进行条件渲染 -->
    <p v-if="type === 'admin'">欢迎管理员</p>
    <p v-else-if="type === 'user'">欢迎用户</p>
    <p v-else>欢迎游客</p>

    <!-- 使用 v-show 进行条件渲染 -->
    <p v-show="isVisible">这段文本会根据 isVisible 的值显示或隐藏。</p>

    <!-- 切换 isVisible 状态的按钮 -->
    <button @click="toggleVisibility">切换可见性</button>

    <!-- 使用 v-if 与列表 -->
    <ul>
      <li v-for="item in items" v-if="item.isVisible" :key="item.id">
        {{ item.text }}
      </li>
    </ul>

    <!-- 切换列表项可见性的按钮 -->
    <button @click="toggleItemVisibility">切换列表项可见性</button>

    <!-- 使用 v-if 与组件 -->
    <child-component v-if="isComponentVisible" />
    <button @click="toggleComponentVisibility">切换组件可见性</button>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      type: 'user', // 可以是 'admin', 'user', 或其他值
      isVisible: true,
      items: [
        { id: 1, text: 'Item 1', isVisible: true },
        { id: 2, text: 'Item 2', isVisible: false },
        { id: 3, text: 'Item 3', isVisible: true }
      ],
      isComponentVisible: true
    };
  },
  methods: {
    toggleVisibility() {
      this.isVisible = !this.isVisible;
    },
    toggleItemVisibility() {
      this.items.forEach(item => {
        item.isVisible = !item.isVisible;
      });
    },
    toggleComponentVisibility() {
      this.isComponentVisible = !this.isComponentVisible;
    }
  }
};
</script>

<style>
/* 可以在这里添加一些样式 */
</style>

8.列表渲染

在 Vue.js 中,列表渲染通常是通过 v-for 指令来完成的。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: 'Apple' },
        { id: 2, name: 'Banana' },
        { id: 3, name: 'Cherry' }
      ]
    };
  }
};
</script>

9.计算属性

在 Vue.js 中,计算属性(Computed Properties)是一种特殊的方法,它们根据组件中响应式数据的变化自动更新。计算属性是基于它们的依赖进行缓存的,只有当依赖发生变化时,计算属性才会重新计算。这使得计算属性非常适合用于当你需要根据现有数据派生出一些状态时。

基本用法

计算属性在组件的 computed 选项中定义,它们可以接收一个 getter 函数,也可以同时接收 getter 和 setter 函数。

只读计算属性

export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName() {
      return `${this.firstName} ${this.lastName}`;
    }
  }
};

在这个例子中,fullName 是一个计算属性,它根据 firstNamelastName 的值派生出全名。

可读写计算属性

计算属性也可以定义 setter 函数,使其成为可读写的属性。

export default {
  data() {
    return {
      firstName: 'John',
      lastName: 'Doe'
    };
  },
  computed: {
    fullName: {
      get() {
        return `${this.firstName} ${this.lastName}`;
      },
      set(newValue) {
        var names = newValue.split(' ');
        this.firstName = names[0];
        this.lastName = names[names.length - 1];
      }
    }
  }
};

10.监视属性

在 Vue.js 中,监视属性(Watching Properties)是指使用 watch 选项来观察和响应 Vue 实例上的数据变动。当你需要在数据变化时执行异步操作或开销较大的操作时,watch 是非常有用的。

基本用法

在 Vue 组件中,你可以在 watch 选项中定义监视器,来观察一个或多个数据属性的变化。

export default {
  data() {
    return {
      question: ''
    };
  },
  watch: {
    // 监视 question 的变化
    question(newQuestion, oldQuestion) {
      console.log(`Question changed from ${oldQuestion} to ${newQuestion}`);
    }
  }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值