填坑😋:vant的stepper步进器有点小坑
前言
心理咨询说一个人怎样才能发生真正的改变。 就是,当他再次到达那个“十字路口”,他不像以前那样直接走向左边,而是开始思考,自己是不是可以选右边。
人间烟火味~
7月新出炉文:
一、场景
相信大家都玩过vant库。
我会用最通俗易懂的话语描述的😊,相信大家能看懂的。
我有一个表单,表单里面有一个步进器,初始化进来的时候,传入数值为null,我想要的效果是为null,但现在前端显示0,如下图所示:
二、分析
目前的代码:
<van-stepper
v-model="fild.value"
:step="fild.step"
:min=" fild.min"
:max="fild.max"
:decimal-length="fild.decimalLength"
/>
为什么我们现在前端展示的是0?
因为前端拿到值后,会转换一下,如果是null的话会设置为0。
如果前端不转换的话,按照文档上,默认值应该是1
那么,我们现在的需求是:数据为null,展示null。
好。
我们看一下文档有没有相关api。
2.1 default-value
我们可以看到有个属性default-value:初始值,当 v-model 为空时生效
我按照文档设置了之后。:default-value="null"
<van-stepper
v-model="fild.value"
:step="fild.step"
:min=" fild.min"
:max="fild.max"
:decimal-length="fild.decimalLength"
:default-value="null"
/>
无效。页面不起作用。
那default-value=""
呢?
很遗憾,也无效🤣。
我怀疑他这个属性,只是能设置数值,无法设置null这些字符。
2.2 allow-empty
在我山重水复疑无路的时候,我又翻了一下文档。
看到了一个新属性,allow-empty:是否允许输入的值为空
这不就是我想要的属性效果吗。
我当时看到是有个疑惑的:
default-value:初始值,当 v-model 为空时生效
allow-empty:是否允许输入的值为空
感觉这两个属性,要先设置allow-empty,default-value才生效的样子。
这个后面说。
我正欣喜万分开始尝试,看到版本号2.9.1才能使用
我默默的回去看了一下自己的版本号"vant": "^2.5.8",
当我在犹豫要不要更新的时候,产品大佬又狂追问,修复了吗?
来不及思考了🤠,直接
cnpm install vant@^2.13.2 --save
编程,添加:allow-empty="true"
<van-stepper
v-model="fild.value"
:step="fild.step"
:min=" fild.min"
:max="fild.max"
:decimal-length="fild.decimalLength"
:default-value="null"
:allow-empty="true"
/>
貌似不太行。
后面发现是default-value=“”就可以了。
其实一开始不生效的时候,怀疑过min是不是应该设置null,才生效。
遇到问题不要慌,先看文档。
❣️真好,步进器可以了。
2.3 cascader
当我继续看其他案例的组件的时候,我发现van-cascader组件竟然报错了。
看看代码写法
我为什么会去看vant的其他组件? 这是直觉,这也是我不太敢在已有项目升级库的原因,容易引起副作用。 多检查,准没错!
我开始分析这个错误。
说我没有安装这个组件,但这是vant库的呀!
我在局部组件尝试一下引入。
<template>
<van-cascader v-model="value" :options="options" />
</template>
<script>
import { Cascader as VanCascader } from 'vant';
export default {
components: {
VanCascader,
},
data() {
return {
value: [],
options: [
// 你的选项数据
],
};
},
};
</script>
没用。
🥳难道?
我相信大家和我想的一样,这个版本的这个组件有问题。
或者说根本还没有这个组件。
我马上去看了一下源码。
根本都没有找到cascader,震惊了。
虽然修复了stepper组件可以设置为空了。
但cascader却不能用了,这显然不是我想要的。
我一开始想的解决方案是:
之前的版本是"vant": "^2.5.8",(此版本有cascader正常使用)
2.9.1没有(此时的package的版本)
我想拷贝2.5.8的版本到2.9.1里面,手动添加。
2.4 vant源码
当然,如果嫌麻烦的话,我还有B Plan。
继续更新vant的版本,直到有van-cascader组件。
那么问题来了,我怎么知道哪个版本有?难不成跨大版本到3吗?
那倒不至于,答案前面已经有说过了。
🤗在源码中找!
这里有很多版本,作者每���一个版本都会打一个tags标签,公司也有用这种分支管理的。
找呀找,我找到大版本2的最后一个版本。
2.13.2:github.com/youzan/vant…
终于找到你小子了。
其实,为什么我会知道这个2.13.2版本呢?
因为在官网有提过大版本2的最后一个版本2.13.2
vant-ui.github.io/vant/v2/#/z…
既然前方路已开,那便前程无忧。
安装升级:cnpm install vant@^2.13.2 --save
安装完后,刷新页面无效,你慌了吗?
一点都不慌,因为你还没有重新run serve,升级了依赖,如果不重新run,webpack读的还是之前的依赖,这就是缓存的作用,让你编译更快,不然每次都要重新编译,就有点小慢了。
重新启动后,成功解决了。
两者都开心。
天女撒花🌷🌷~
后记
遇到问题不要慌,先看文档,再凭借自己的经验。
相信自己的直觉~
如果有其他更好的方法也欢迎评论区见,这里提供的只是诸多方法之一。
最后,祝君能拿下满意的offer🥰。
👍 如果对您有帮助,您的点赞是我前进的润滑剂。
以往推荐
原文链接
转载自:https://juejin.cn/post/7387309614792572968