当前位置:首页 > VUE

vue实现修改信息页面

2026-02-20 19:12:28VUE

Vue 实现修改信息页面

数据绑定与表单结构

使用 v-model 实现表单数据的双向绑定,确保表单字段与 Vue 实例中的数据属性同步。例如:

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="formData.name" placeholder="姓名" />
    <input v-model="formData.email" placeholder="邮箱" />
    <button type="submit">保存</button>
  </form>
</template>

初始化表单数据

datasetup 中定义表单的初始数据,可通过接口获取原始信息填充:

data() {
  return {
    formData: {
      name: '',
      email: ''
    }
  }
}

加载原始数据

createdmounted 生命周期中调用接口获取原始数据:

async mounted() {
  const res = await axios.get('/api/user-info');
  this.formData = res.data;
}

表单提交逻辑

定义提交方法,验证数据后调用更新接口:

methods: {
  async handleSubmit() {
    try {
      await axios.put('/api/update-info', this.formData);
      alert('修改成功');
    } catch (error) {
      console.error(error);
    }
  }
}

表单验证

使用 Vuelidate 或手动验证确保数据合法性:

import { required, email } from 'vuelidate/lib/validators';

validations: {
  formData: {
    name: { required },
    email: { required, email }
  }
}

反馈与跳转

操作成功后提供反馈并跳转页面:

vue实现修改信息页面

async handleSubmit() {
  if (this.$v.$invalid) return;
  await axios.put('/api/update-info', this.formData);
  this.$router.push('/profile'); // 跳转到个人主页
}

完整组件示例

<template>
  <form @submit.prevent="handleSubmit">
    <input v-model="formData.name" placeholder="姓名" />
    <span v-if="$v.formData.name.$error">姓名必填</span>

    <input v-model="formData.email" placeholder="邮箱" />
    <span v-if="$v.formData.email.$error">邮箱格式错误</span>

    <button type="submit">保存</button>
  </form>
</template>

<script>
import { required, email } from 'vuelidate/lib/validators';

export default {
  data() {
    return {
      formData: { name: '', email: '' }
    }
  },
  validations: {
    formData: {
      name: { required },
      email: { required, email }
    }
  },
  async mounted() {
    const res = await axios.get('/api/user-info');
    this.formData = res.data;
  },
  methods: {
    async handleSubmit() {
      this.$v.$touch();
      if (this.$v.$invalid) return;

      await axios.put('/api/update-info', this.formData);
      this.$router.push('/profile');
    }
  }
}
</script>

标签: 页面信息
分享给朋友:

相关文章

css制作滑动页面

css制作滑动页面

使用CSS实现滑动页面 通过CSS可以实现多种滑动页面效果,包括横向滑动、纵向滑动以及视差滚动等。以下是几种常见的实现方法: 横向滑动效果 横向滑动通常用于展示一组卡片或图片,可以通过CSS的ove…

css制作锁屏页面

css制作锁屏页面

使用CSS制作锁屏页面 锁屏页面通常包含一个背景、时间显示以及可能的解锁按钮或输入框。以下是实现锁屏页面的关键CSS代码和结构。 HTML结构 <!DOCTYPE html> <…

vue实现页面跳转

vue实现页面跳转

vue实现页面跳转的方法 在Vue中实现页面跳转主要有以下几种方式: 使用router-link组件 router-link是Vue Router提供的组件,用于声明式导航: <router…

vue实现预约页面

vue实现预约页面

实现预约页面的基本结构 使用Vue CLI或Vite创建一个新项目,安装必要依赖如vue-router和axios。项目结构建议包含components文件夹存放可复用组件,views文件夹存放页面级…

vue实现两个登录页面

vue实现两个登录页面

实现多个登录页面的方法 在Vue项目中实现两个不同的登录页面,可以通过路由配置和组件分离的方式完成。以下是具体实现方法: 配置路由文件 在router/index.js中定义两个独立的路由,分别指向…

h5实现登录页面跳转页面跳转页面跳转页面

h5实现登录页面跳转页面跳转页面跳转页面

实现登录页面跳转的方法 在H5中实现登录页面跳转可以通过多种方式完成,以下是一些常见的方法: 使用JavaScript的window.location方法 通过JavaScript的window.l…