描述bug
当一个组件有一个可选的对象属性,并且它被设置为一个未定义的参数时,在尝试定义对象键时,会自动将一个空对象设置为参数值。
这对于那些有必需条目但无法定义的组件来说是个问题,因为点击“设置对象”会在任何必需条目被定义之前将参数设置为 {}
。
重现bug
https://63f4f662ea2e878c745e00db-sfsgqnpqra.chromatic.com/?path=/docs/example-introduction--docs
- 查看“默认工作”故事以查看组件
- 查看“不起作用”的故事
- 点击“设置对象”控件
- 注意错误 - 在安全地定义对象之前,我们已经将一个空对象参数输入到了属性中
系统
Environment Info:
System:
OS: macOS 13.1
CPU: (8) arm64 Apple M1 Pro
Binaries:
Node: 16.18.1 - ~/.nvm/versions/node/v16.18.1/bin/node
Yarn: 1.22.19 - ~/.nvm/versions/node/v16.18.1/bin/yarn
npm: 8.19.2 - ~/.nvm/versions/node/v16.18.1/bin/npm
Browsers:
Chrome: 110.0.5481.100
Safari: 16.2
npmPackages:
@storybook/addon-essentials: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/addon-interactions: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/addon-links: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/blocks: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/node-logger: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/preset-create-react-app: ^4.1.2 => 4.1.2
@storybook/react: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/react-webpack5: ^7.0.0-beta.47 => 7.0.0-beta.52
@storybook/testing-library: ^0.0.14-next.1 => 0.0.14-next.1
其他上下文
对于这个问题的长期修复可能是改进对TS接口的支持。在短期内,{}
可能应该在用户按下回车键之后再设置。
1条答案
按热度按时间c8ib6hqw1#
我刚刚遇到了这个问题,尝试设置一个简单的用户对象,例如:
{ id: 2, name: 'KeitelDOG', image: '' }
。然而它自动发送了一个空对象{}
,而Typescript类型User正是用于这些属性的。我不需要检查这些属性,因为这就是Typescript或PropTypes存在的原因。