gpt4 book ai didi

reactjs - 访问 React 组件中嵌套 propType 中的所有 props

转载 作者:行者123 更新时间:2023-12-03 14:04:38 27 4
gpt4 key购买 nike

我试图根据disableLightbox的属性有条件地使lightboxImage成为必需或不必需。然而,当我从 lightboxImage 读取 Prop 时,我只获得第一级属性(src、宽度、高度、aspectRatio),而不是向上级别(照片、disableLightbox)。有什么方法可以读取所有属性吗?

Gallery.propTypes = {
photos: React.PropTypes.arrayOf(
React.PropTypes.shape({
src: React.PropTypes.string.isRequired,
width: React.PropTypes.number.isRequired,
height: React.PropTypes.number.isRequired,
aspectRatio: React.PropTypes.number.isRequired,
lightboxImage: props => console.log(props)
})
).isRequired,
disableLightbox: React.PropTypes.bool
};

最佳答案

@MatthewHerbst 解释了关键思想,即自定义验证器,但这里是示例代码的重写版本,它更完整、更适用且更简单(仅供引用,但未经测试):

photos: function (props, propName, componentName) {
// I don't know what `lightboxImage` is, I'll assume string.
var lightboxImageValidator = React.PropTypes.string;
if (!props.disableLightbox) {
lightboxImageValidator = lightboxImageValidator.isRequired;
}

return React.PropTypes.arrayOf(
React.PropTypes.shape({
src: React.PropTypes.string.isRequired,
width: React.PropTypes.number.isRequired,
height: React.PropTypes.number.isRequired,
aspectRatio: React.PropTypes.number.isRequired,
lightboxImage: lightboxImageValidator,
})
).isRequired.apply(this, arguments);
}

关于reactjs - 访问 React 组件中嵌套 propType 中的所有 props,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747468/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com