ant-design / ant-design

An enterprise-class UI design language and React UI library
https://ant.design
MIT License
90.42k stars 46.41k forks source link

Form.useWatch 为 undefined 导致页面报错 #48680

Closed crazyair closed 1 week ago

crazyair commented 2 weeks ago

Reproduction link

Edit on StackBlitz

Steps to reproduce

打开 demo

What is expected?

不报错

What is actually happening?

报错

Environment Info
antd 5.16.5
React latest
System mac
Browser chrome

name 如果不传,则是 undefined,但是 value 不是 undefined,而是 {},希望当 name 为 undefined、null、false,返回值为 undefined

stackblitz[bot] commented 2 weeks ago

Fix this issue in StackBlitz Codeflow Start a new pull request in StackBlitz Codeflow.

Wxh16144 commented 2 weeks ago
image

文档说了第一个参数必填,感觉没必要做太多防御性编程,应该由使用开发者自己判断。

crazyair commented 2 weeks ago
image

文档说了第一个参数必填,感觉没必要做太多防御性编程,应该由使用开发者自己判断。

类型定义的是必填的,但是其实可以

const ddd: string | undefined = undefined;
    Form.useWatch(ddd);

不报错,这个 useWatch 的类型定义估计有点问题,但

如果是 useWatch('') 估计也不会有类型错误,

另外其实可以优化,如果 useWatch 的 name 参数找不到 value 可以返回空,不返回 {}

MadCcc commented 1 week ago

JSON.stringify

crazyair commented 1 week ago

应该是 useWatch 返回 undefined

crazyair commented 1 week ago

https://github.com/react-component/field-form/pull/690