作者:手机用户2602931131 | 来源:互联网 | 2022-12-02 17:43
我正在写一个基于的项目react native
。我正在使用prop-types
组件的类型检查。现在我想换行Image
的分量react-native
在我自己的Image
分量。在以下代码中,请参阅我自己的Image
组件:
import React from 'react';
import { Image as ImageNative } from 'react-native';
import PropTypes from 'prop-types';
const Image = ({ style, source }) => (
);
Image.defaultProps = {
style: {}
};
Image.propTypes = {
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
source: PropTypes.any.isRequired
};
export default Image;
我决定使用自己的Image
组件的每个地方,我都将其导入并按如下所示使用它:
其实,我检查了source
我自己的内托Image
组成的任何。
source: PropTypes.any.isRequired
但这不是真的。我知道。我不知道该写些什么。require
我在这里检查过的函数返回值是什么类型?
1> 小智..:
实际上,我拒绝使用any
。好的答案是node
。
在组件中插入require('assets/images/splashSignInAsset.png')
函数时Image
,必须检查node
prop类型,如下所示:
Image.propTypes = {
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
source: PropTypes.node.isRequired
};
但是我认为正确的答案是使用React Native
component属性类型source
:
import { Image as ImageNative } from 'react-native';
...
Image.propTypes = {
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
source: ImageNative.propTypes.source.isRequired
};
更新:
另外,确切的答案是source
在react-native
源代码中使用prop类型,因此最佳答案类似于以下代码:
source: PropTypes.oneOfType([
PropTypes.shape({
uri: PropTypes.string,
headers: PropTypes.objectOf(PropTypes.string)
}),
PropTypes.number,
PropTypes.arrayOf(
PropTypes.shape({
uri: PropTypes.string,
width: PropTypes.number,
height: PropTypes.number,
headers: PropTypes.objectOf(PropTypes.string)
})
)
])