javascript - 如何进行可重用的 proptype 验证?
问题描述
假设我有一个名为的父组件Logo
,它分别包含两个子组件Image
和Text
. 下面的代码显示了我如何验证父组件的道具。
Logo.propTypes = {
type: PropTypes.string,
children: PropTypes.oneOfType([
PropTypes.shape({
type: PropTypes.oneOf([Image, Text])
}),
PropTypes.arrayOf(
PropTypes.shape({
type: PropTypes.oneOf([Image, Text])
})
)
])
};
这工作正常,做我真正想要的。
但是我有很多其他组件,我做同样的子验证螺母只是变化是PropTypes.oneOf([Image, Text])
数组。所以,在那种情况下,我认为应该有一种在 javascript/react 中使用它的通用方法,使这个代码片段可以在组件之间重用。
解决方案
你可以考虑一个更高级的解决方案,但propTypes
它实际上只是一个对象,如果你把它变成一个接收两个参数image
并text
返回一个对象的函数,那么你可以将它导入到你的组件中:
export const myPropTypesCreator = (image, text) =>({/*return the object*/})
在您的组件内部:
import { myPropTypesCreator } from './mypath'
Logo.propTypes = myPropTypesCreator(image,text)
推荐阅读
- javascript - 使用 CSS 让我的标签在移动解决方案上更好
- sorting - Elasticsearch:如果点击次数过多,则有条件/禁用排序
- mysql - SQL查询以获取按列分组的列的最新非空值
- version-control - DVC 如何将目录级别的差异存储到 DVC 缓存中?
- postgresql - 使用 Postgres 逻辑复制槽时如何限制 WAL 大小?
- apache-kafka - 永久 Kafka Streams/KSQL 保留策略
- git - Git - .config 中的命名约定?
- json - 从 jq 请求中检索空值
- google-sheets - 根据日期对多个电子表格中的值求和
- javascript - Console.logging,然后在 javascript 函数中返回 console.log