以搜索框为例子
vue2的写法
第一种
<template>
<div>
<el-input
v-model="searchKeyword"
placeholder="请输入搜索关键字"
clearable
@clear="clearSearch"
@keydown.enter="handleSearch"
/>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</template>
<script>
export default {
data() {
return {
searchKeyword: ''
};
},
methods: {
handleSearch() {
// 执行搜索操作
console.log('执行搜索操作,关键字:', this.searchKeyword);
// 进行相关的搜索逻辑处理
},
clearSearch() {
// 清空搜索关键字
this.searchKeyword = '';
}
}
};
</script>
vue3的写法
第一种,我们使用了Vue 3的ref函数来创建响应式数据searchKeyword。在setup函数中定义了handleSearch方法和clearSearch方法,并将它们作为返回值暴露给模板使用。
使用Composition API的好处是可以将相关的逻辑进行组合,而不是按照选项的方式进行划分。这样,我们可以更方便地重用和组合逻辑代码,使代码更具可读性和可维护性。
请注意,使用Composition API时,我们不再使用data选项和传统的Options API写法,而是在setup函数中定义响应式数据和方法,并通过返回值暴露给模板使用
<template>
<div>
<el-input
v-model="searchKeyword"
placeholder="请输入搜索关键字"
clearable
@clear="clearSearch"
@keydown.enter="handleSearch"
/>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup() {
const searchKeyword = ref('');
const handleSearch = () => {
// 执行搜索操作
console.log('执行搜索操作,关键字:', searchKeyword.value);
// 进行相关的搜索逻辑处理
};
const clearSearch = () => {
// 清空搜索关键字
searchKeyword.value = '';
};
return {
searchKeyword,
handleSearch,
clearSearch
};
}
};
</script>
第三种
使用 script setup 语法,我们可以直接在脚本块中定义变量和方法,无需再通过return将它们导出。这种写法更加简洁和直观
<template>
<div>
<el-input
v-model="searchKeyword"
placeholder="请输入搜索关键字"
clearable
@clear="clearSearch"
@keydown.enter="handleSearch"
/>
<el-button type="primary" @click="handleSearch">搜索</el-button>
</div>
</template>
<script setup>
import { ref } from 'vue';
const searchKeyword = ref('');
const handleSearch = () => {
// 执行搜索操作
console.log('执行搜索操作,关键字:', searchKeyword.value);
// 进行相关的搜索逻辑处理
};
const clearSearch = () => {
// 清空搜索关键字
searchKeyword.value = '';
};
</script>