[英]Render React Component Depending on its Type
我想知道在 React 中是否有一种方法可以根据组件的类型有条件地渲染组件。 根据文档,您可以通过以下方式定义组件的道具类型:
MyComponent.propTypes = {
description: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
};
有没有办法使用框架检查类型并根据接收到的道具数据是string
还是array
来以不同的方式呈现组件?
我知道我可以使用原始 JS 来确定这一点,方法是使用type of
或检查数据数组的属性。
if (typeof description === "string") { /* render string component */ }
else { /* render array component */ }
我想知道 React 是否有内置的、更强大的方法来执行此操作。
我想知道 React 是否有内置的、更强大的方法来执行此操作。
description
是一个联合道具类型。
因此,您需要通过使用render props来实现渲染逻辑。
const StringDescription = (props) => {...}
const ArrayDescription = (props) => {...}
function renderDescription(description) { // rendering logic / strategy
switch(typeof description) {
case 'string':
return <StringDescription />;
default:
return <ArrayDescription />;
}
}
<Description
description={description}
render={renderDescription} // render prop
/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.