随着前端框架的不断发展,Vue3 的发布为前端开发者提供了一种更加快捷、高效的方式来构建复杂的应用。其中响应式设计作为 Vue3 的一大特色,使得前端开发者可以非常方便地处理元素的变化。本文将分享一些Vue3实现响应式设计下顶部搜索栏的技巧,包括示例代码,帮助读者深入了解Vue3的响应式机制,掌握实现顶部搜索栏的技能。
1. Vue3响应式设计的基本原理
Vue3 响应式设计的基本原理是通过 proxies
监测对象的变化,一旦对象发生变化,Vue3将自动更新相应的组件及其 DOM。要使用 Vue3 的响应式设计,开发者需在创建组件的时候使用 ref()
或 reactive()
创建响应式对象。
2. Vue3 实现顶部搜索栏
下面将分享如何使用 Vue3 实现响应式设计下顶部搜索栏。在本示例中,我们将实现一个带有搜索输入框和按钮的搜索栏,并实现根据输入结果进行实时搜索的功能。
2.1 创建组件
首先创建一个 SearchBar 的组件,组件的写法如下:
// javascriptcn.com 代码示例 <template> <div class="search-bar"> <input type="text" v-model="searchText" /> <button @click="search">搜索</button> </div> </template> <script> import { ref } from 'vue'; export default { name: 'SearchBar', setup() { const searchText = ref(''); const search = () => {}; return { searchText, search, }; }, }; </script> <style scoped> .search-bar { display: flex; justify-content: space-between; width: 100%; height: 50px; background-color: #fff; box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1); border-radius: 4px; padding: 0 20px; } input[type='text'] { width: 100%; height: 100%; border: none; outline: none; font-size: 16px; } button { width: 80px; height: 100%; border: none; outline: none; background-color: #ccc; color: #fff; font-size: 16px; border-radius: 2px; cursor: pointer; margin-left: 10px; } </style>
在上述代码实现中,我们使用了 ref()
方法来创建响应式对象 searchText
,用于存储输入内容。另外,我们还需要一个 search
方法,用于实现搜索逻辑。此时,我们只是完成了 SearchBar 的渲染和样式布局,还没有添加搜索的真正逻辑。
2.2 实现搜索逻辑
接下来我们来实现 SearchBar 的搜索功能,实现代码如下:
// javascriptcn.com 代码示例 import { ref, computed } from 'vue'; export default { name: 'SearchBar', setup() { const searchText = ref(''); const searchList = ref([ { id: 1, name: '张三' }, { id: 2, name: '李四' }, { id: 3, name: '王五' }, { id: 4, name: '赵六' }, ]); const filteredList = computed(() => { return searchList.value.filter(item => item.name.includes(searchText.value)); }); const search = () => {}; return { searchText, filteredList, search, }; }, };
在上述代码中,我们新增了一个 searchList
数组来存放需要搜索的数据,将其赋值给 searchedList
。此外,我们还使用了 computed()
函数来实现一个计算属性 filteredList
,通过 searchText.value
来筛选包含输入内容的搜索结果(即 name.includes(searchText.value)
)。当 searchText
或 searchList
发生变化时,filteredList
也会相应地更新。
下面我们再来完善 search
方法,实现点击按钮进行搜索的逻辑:
const search = () => { console.log('searchText: ', searchText.value); console.log('searchList: ', filteredList.value); };
这里仅输出变量的值,我们可以在实际的业务场景中调用相关的接口,对筛选后的数据进行进一步处理。
2.3 实现即时响应
通过上述的代码实现,我们已经可以实现基本的搜索功能,但是输入框输入内容变化后,页面上并没有立即响应搜索结果。为了实现即时响应,我们需要在输入框输入文字时实时更新搜索结果。具体实现代码如下:
<input type="text" v-model="searchText" @input="search" /> ... const search = () => { console.log('searchText: ', searchText.value); console.log('searchList: ', filteredList.value); };
在本示例中,我们通过 @input
事件来监听文本框内容的变化,然后直接在回调函数中调用 search
方法来实时更新搜索结果。
3. 总结
本文中,我们分享了使用Vue3实现响应式设计下顶部搜索栏的技巧。通过上述示例,我们深入理解了Vue3的响应式机制,掌握了实现顶部搜索栏的技能。希望这篇文章对广大前端开发者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/658632f8d2f5e1655d098101