不更改版本 element ui el-date-picker 报错 Prop being mutated: “placement“解决

1.问题:使用elementui 时间选择报错

今天在使用elementui 时间选择器时,一切正常,但发现浏览器一直报错,但奇了怪了,明明是从官网上复制的组件代码,咋还会有问题,错误提示如下:

 2.分析:

Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated:"placement".

这个报错是提示我们避免直接更改 prop,因为每当父组件重新呈现时,该值都会被覆盖。相反,请使用基于 prop 值的数据或计算属性。啥意思,不太明白,但当我们找到源码时,会发现其中的问题所在:

在 node_modules中的elementui/packages 里可以找到datepicker的源码vue,分析发现报错提示我们每次渲染加载页面时,这个placement的值都会被重新覆盖,需要我们使用源码中要求的数据,感觉还是很拗口,但大概意思是让我们赋值给placement。

3.解决:

之前遇到问题时,虽然这个问题暂时并不会影响页面操作,但担心会有其他隐患,关键浏览一直报错,强迫症都犯了。百度后发现网上大部分都是说版本问题,2.15.9 开始的,新版本中加了placement这个变量。旧版本不报错,可以退回旧版本就不会报错,具体退回的步骤可参考其他博客的内容。

但感觉回退版本这种方法治标不治本,测试后发现还是要提供placment的赋值数据,其实在于后面的PLACEMENT_MAP[this.align] || PLACEMENT_MAP.left这里,组件需要根据align或left属性来赋值,查阅官方文档后发现:

 picker有align属性,经过测试后发现果然和align有关,随之问题迎刃而解,只要在组件添加align属性即可。如这里我添加align="center" ,element UI原生组件获取添加的align属性值来设置props中的placement变量

<el-form-item label="时间:">
       <el-date-picker
           v-model="value2"
           type="date"
           align="center"
           placeholder="时间选择">
       </el-date-picker>
</el-form-item>

添加完成后就再进行测试,浏览器再也没有报错了,刚从坑底爬出来,希望对你有帮助。 

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值