【发布时间】:2021-12-04 19:37:14
【问题描述】:
我有一个名为 Visible 的组件,它有两个道具:条件和孩子 流程是,如果条件为真,组件将返回子项,如果不是,它将返回 null(就像条件渲染一样),但 VScode 无法识别条件正在做什么并为子项抛出错误(变量可能为空)
有没有办法为这个组件定义一个类型返回 VScode 识别条件检查变量?
可见.ts:
interface IVisible {
condition: any
children: React.ReactNode
}
function Visible(props: IVisible) : React.ReactNode {
const {condition, children} = props
if( !(!!condition) ) return null;
return <Fragment>{children}</Fragment>
}
用法示例:
const [banana, setBanana] = useState<undefined|string[]>(["foo","bar"])
return (
<Visible condition={banana}>
<ul>
{banana.map(e => <li key={e}>{e}</li>) }
</ul>
</Visible>
)
【问题讨论】:
-
如果你的
condition属性是boolean,你会更容易找出问题所在,因为它应该是。然后,您可以考虑如何将该数组转换为布尔值,然后再将其作为道具传递。
标签: reactjs typescript conditional-statements conditional-rendering