vue2的ElementUI的form表单报错“Error: [ElementForm]unpected width”修复

5 篇文章 0 订阅

1. 问题

ElementUI的form表单,当动态切换显示表单时报错 Error: [ElementForm]unpected width
在这里插入图片描述
翻译过来就是form表单的label宽度width出了问题。

2. 分析

参数说明类型可选值默认值
label-width表单域标签的宽度,例如 ‘50px’。作为 Form 直接子元素的 form-item 会继承该值。支持 auto。string

查看这里可以查阅ElementUI的form完整的属性配置。

其实给form表单配置的labelWidth属性会被子组件form-item继承使用,设置的labelWidth值为auto, 此时的操作是销毁某个formItem,beforeDestroy在调用getLabelWidthIndex时报错。

3. 解决方案

通常这类操作两种方案:

1.修改labelWidth

将labelWidth设为固定宽度,以便子组件继承使用。

2.关注组件和子组件生命周期

很多开发同行建议v-show改为v-if,或者不要在样式里对formItem直接使用display:none;
点击这里可以查看v-show和v-if区别。

4. 我的处理

form表单inline属性为true行内默认设置空字符串,false非行内我就设置固定宽度,同时不直接使用v-show和样式display:none;来渲染formItem,然后就解决该问题不再报错。

当然,我不喜欢手动一个个写formItem,能v-for写下来绝对不一个个手打,配置才是摸鱼省事的最好方法。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以先在el-form的submit方法中使用axios发送请求,具体的方法如下: 在template中: ``` <el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="form.password"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> <el-button @click="resetForm">重置</el-button> </el-form-item> </el-form> ``` 在script中: ``` import axios from 'axios'; export default { data() { return { form: { username: '', password: '' }, rules: { username: [{ required: true, message: '请输入用户名', trigger: 'blur' }], password: [{ required: true, message: '请输入密码', trigger: 'blur' }] } }; }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { axios.post('/api/login', this.form).then(response => { if (response.data.code === 200) { // 登录成功,跳转到首页 this.$router.push('/home'); } else { this.$message.error('登录失败'); } }); } else { return false; } }); }, resetForm() { this.$refs.form.resetFields(); } } }; ``` 在上述代码中,我们先引入了axios,使用axios发送POST请求到后台的/api/login接口,参数为表单中的form数据。如果接口返回的状态码为200,说明登录成功,此时可以跳转到首页。如果接口返回的状态码不为200,说明登录失败,此时可以给用户提示登录失败信息。 至此,vueelement-ui的form组件与axios的api接口就合使用成功了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值