vue实现交互页面
Vue 实现交互页面的核心方法
数据绑定与响应式更新
Vue 通过 v-model 实现表单元素与数据的双向绑定,修改数据会自动更新 DOM。例如输入框绑定:
<input v-model="message">
<p>{{ message }}</p>
data() {
return { message: '' }
}
事件处理
使用 v-on(或简写 @)监听 DOM 事件,触发方法执行交互逻辑:
<button @click="handleClick">提交</button>
methods: {
handleClick() {
alert('按钮被点击');
}
}
条件渲染与列表渲染
通过 v-if 和 v-for 动态控制内容显示:
<div v-if="isShow">条件显示的内容</div>
<ul>
<li v-for="item in list" :key="item.id">{{ item.name }}</li>
</ul>
组件通信
父子组件通过 props 和 $emit 交互:
// 父组件
<ChildComponent :data="parentData" @update="handleUpdate"/>
// 子组件
props: ['data'],
methods: {
sendData() {
this.$emit('update', newData);
}
}
状态管理(Vuex/Pinia)
复杂交互使用状态管理库集中管理数据:
// Pinia 示例
import { defineStore } from 'pinia';
export const useStore = defineStore('main', {
state: () => ({ count: 0 }),
actions: {
increment() {
this.count++;
}
}
});
异步交互
结合 axios 等库处理异步请求:
methods: {
async fetchData() {
try {
const res = await axios.get('/api/data');
this.data = res.data;
} catch (error) {
console.error(error);
}
}
}
动态样式与类名
通过 v-bind:class 实现交互式样式变化:
<div :class="{ active: isActive }">动态类名</div>
<div :style="{ color: textColor }">动态样式</div>
路由交互(Vue Router)
页面跳转与参数传递:
// 编程式导航
this.$router.push({ path: '/detail', query: { id: 123 } });
// 接收参数
this.$route.query.id
动画过渡
使用 <transition> 组件添加交互动画:
<transition name="fade">
<div v-if="show">淡入淡出的内容</div>
</transition>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter-from, .fade-leave-to {
opacity: 0;
}






