[ElemeFE/element][Bug Report] el-select clearable清空时,值被设为空字符串"",清空时应该设为null

2024-08-20 941 views
3
Element UI version

2.9.1

OS/Browsers version

MacOS10.14.4/Chrome 74

Vue version

2.6.6

Reproduction Link

https://codepen.io/hevi1991/pen/zQeEzw

Steps to reproduce

1.写个el-select,配置clearable。 2.点击清除按钮

What is Expected?

v-model的值被设置为null,而不是""

What is actually happening?

v-model被设置为""

回答

1

还有el-input也是这个情况,不知道是故意设置成这样的还是bug。 el-input清空的时候,默认也是填空字符串。

4

怎么没有回复这个问题啊

9

其实还有挺多form控件也会有这个问题,设clearable清空的时候返回的是""。 现在遇到这个问题,我都直接不检查select的类型了。

0

wei shen me mei you ren ?

3

同关注

7

对于前端来说,你不应该设为null,这就是一个字符串,官方将其清空设为''是正确的操作。你要想要null,将element-ui回退到2.8.2就可以。 我们刚好是用2.8.2,发现被设为null,其实我们想要''。

6

应该设置成null,字符串传到后台会被认为是有值,值为空字符串,而且类型还是字符串

4

image 我认为, 这里解释的清空初始状态,就应该是 我们 data 里面的数据, 例如 我设置 selectData: undefined, 那么 clear 之后应该会变成 undefined, 如果是 null 则变成 null , 而不是 变成 ''

3

同关注,没有解决办法只能硬判断

0

如果绑定的是数组,选择的时候,arr=['test1','test2'] ,后台通常会要单个的,不要数组,那么拆出来 let [test1,test2] = arr; 有值是正常的,如果清空,arr=null,let [test1,test2] = arr ; TypeError: Invalid attempt to destructure non-iterable instance;; 清空 为''字符串,起码取值为undefined,不至于直接报错

4

觉得可以允许开发者指定默认值:有默认值则清空后,重设为默认值,否则设置为''

8

null,int,空字符 是完全不同的三个东西,现在 null和int 可兼容,但是传空字符串就很奇怪,应该给个配置,可以传null

1

+1,项目也遇到了这个问题,加了个watch监听null → ""

9

可以使用官方提供的clear实现

<el-select
  v-model="form.gender"
  clearable
  @clear="() => { form.gender=null } "
>
...
</el-select>
0

这点对TS不太友好。v-model绑定的值为number类型的时候,初始值却不能直接设置为0

5

不是那么的好用,我尝试同时@clear和@change。当我清空的时候,先一步就执行了change的,把''已经发出去了,然后才置为undefined。 可以用,但是不够完美