[英]How to use typescript jsdoc annotations for React PropTypes
[英]How to use imported values in React PropTypes?
我正在为功能组件创建PropTypes
,我想将PropTypes.oneOf
与从另一个文件导入的 object 一起使用:
import { MODES } from '../../../Users';
(...)
ManageUserForm.propTypes = {
mode: PropTypes.oneOf(Object.values(MODES)),
}
在Users.js
中, MODES看起来像这样:
export const MODES = {
add: 'add', edit: 'edit', changePassword: 'changePassword',
block: 'block', unblock: 'unblock', delete: 'delete'
};
但是我收到一条错误消息,指出MODES undefined
。 现在,我只是通过对值进行硬编码来解决它,但这并不优雅,我想改进它。 我能做什么?
编辑:我在沙箱中重新创建了问题: codesandbox.io
这可行,但我建议将其保存在同一个文件中,因为它在定义 proptypes 时未被导入。
ManageUserForm.propTypes = {
mode: PropTypes.oneOf(Object.values(require('../../../Users'))),
}
这是一个 codeSandbox 示例https://codesandbox.io/s/react-example-forked-y1br4?file=/index.js
你有一个循环依赖。
App.js
Users.js
Users.js
导入UserCreator.js
。UserCreator.js
导入ManageUserForm.js
。Users.js
再次导入ManageUserForm.js
所有这一切甚至在定义MODES
变量之前。 您不应在ManageUserForm.js
中导入Users.js
,因为Users.js
本身通过UserCreator.js
依赖于ManageUserForm.js
。
您可以将MODES
定义移至ManageUserForm.js
并将其导入Users.js
或更好地将其完全移至单独的文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.