likes
comments
collection
share

填坑😋:vant的stepper步进器有点小坑

作者站长头像
站长
· 阅读数 25

前言


心理咨询说一个人怎样才能发生真正的改变。 就是,当他再次到达那个“十字路口”,他不像以前那样直接走向左边,而是开始思考,自己是不是可以选右边。

填坑😋:vant的stepper步进器有点小坑

人间烟火味~

7月新出炉文:

一、场景

相信大家都玩过vant库。

我会用最通俗易懂的话语描述的😊,相信大家能看懂的。

我有一个表单,表单里面有一个步进器,初始化进来的时候,传入数值为null,我想要的效果是为null,但现在前端显示0,如下图所示:

填坑😋:vant的stepper步进器有点小坑

二、分析

目前的代码:

<van-stepper
    v-model="fild.value"
    :step="fild.step"
    :min=" fild.min"
    :max="fild.max"
    :decimal-length="fild.decimalLength"
  />

为什么我们现在前端展示的是0?

因为前端拿到值后,会转换一下,如果是null的话会设置为0。

如果前端不转换的话,按照文档上,默认值应该是1

填坑😋:vant的stepper步进器有点小坑

那么,我们现在的需求是:数据为null,展示null。

好。

我们看一下文档有没有相关api。

2.1 default-value

我们可以看到有个属性default-value:初始值,当 v-model 为空时生效

填坑😋:vant的stepper步进器有点小坑

我按照文档设置了之后。: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:是否允许输入的值为空

这不就是我想要的属性效果吗。

填坑😋:vant的stepper步进器有点小坑

我当时看到是有个疑惑的:

default-value:初始值,当 v-model 为空时生效

allow-empty:是否允许输入的值为空

感觉这两个属性,要先设置allow-empty,default-value才生效的样子。

这个后面说。

填坑😋:vant的stepper步进器有点小坑

我正欣喜万分开始尝试,看到版本号2.9.1才能使用

我默默的回去看了一下自己的版本号"vant": "^2.5.8",

当我在犹豫要不要更新的时候,产品大佬又狂追问,修复了吗?

来不及思考了🤠,直接

cnpm install vant@^2.13.2 --save

填坑😋:vant的stepper步进器有点小坑

编程,添加: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,才生效。

遇到问题不要慌,先看文档。

❣️真好,步进器可以了。

填坑😋:vant的stepper步进器有点小坑

2.3 cascader

当我继续看其他案例的组件的时候,我发现van-cascader组件竟然报错了。

填坑😋:vant的stepper步进器有点小坑

看看代码写法

填坑😋:vant的stepper步进器有点小坑

我为什么会去看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>

没用。

填坑😋:vant的stepper步进器有点小坑

🥳难道?

我相信大家和我想的一样,这个版本的这个组件有问题。

或者说根本还没有这个组件。

我马上去看了一下源码。

github.com/youzan/vant…

根本都没有找到cascader,震惊了。

填坑😋:vant的stepper步进器有点小坑

虽然修复了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标签,公司也有用这种分支管理的。

填坑😋:vant的stepper步进器有点小坑

找呀找,我找到大版本2的最后一个版本。

2.13.2:github.com/youzan/vant…

终于找到你小子了。

填坑😋:vant的stepper步进器有点小坑

填坑😋:vant的stepper步进器有点小坑

其实,为什么我会知道这个2.13.2版本呢?

因为在官网有提过大版本2的最后一个版本2.13.2

vant-ui.github.io/vant/v2/#/z…

填坑😋:vant的stepper步进器有点小坑

既然前方路已开,那便前程无忧。

安装升级:cnpm install vant@^2.13.2 --save

安装完后,刷新页面无效,你慌了吗?

一点都不慌,因为你还没有重新run serve,升级了依赖,如果不重新run,webpack读的还是之前的依赖,这就是缓存的作用,让你编译更快,不然每次都要重新编译,就有点小慢了。

重新启动后,成功解决了。

两者都开心。

天女撒花🌷🌷~

后记

遇到问题不要慌,先看文档,再凭借自己的经验。

相信自己的直觉~

如果有其他更好的方法也欢迎评论区见,这里提供的只是诸多方法之一。

最后,祝君能拿下满意的offer🥰

👍 如果对您有帮助,您的点赞是我前进的润滑剂。

以往推荐

原文链接

转载自:https://juejin.cn/post/7387309614792572968
评论
请登录