React TypeScript - HTML 和 React 组件的子项
React TypeScript - children of HTML and React Components
我有一个 PopoverMenu
组件,我想在其中访问和使用 children
道具。我看过许多与此类似但不够相似的帖子,无法帮助我解决这个问题。
children
可以是标准 HTML 或其他 React 组件。
这是 PopoverMenu
组件:
export const PopoverMenu = (children) =>
{
const [visible, setVisible] = useState(true);
if (visible) {
return (
<ul ref={ node } className="popover-menu">
{ children }
</ul>
)
}
}
...这是正在使用的组件...
<PopoverMenu>
<PopoverMenuItem>
Edit
</PopoverMenuItem>
<PopoverMenuItem>
Delete
</PopoverMenuItem>
</PopoverMenu>
...或者...
<PopoverMenu>
<li>
<a>Edit</a>
</li>
<li>
<a>Delete</a>
</li>
</PopoverMenu>
我已经为 children
尝试了多种类型,但我的 IDE 似乎对所有类型都不满。其中包括:
ReactNode
HTMLElement
ReactChildren
什么类型会给我想要的结果,为什么?
Children的类型应该是ReactNode
。
但是你需要更正道具解构:它应该是({ children })
。
此外,您需要 return else
块中的内容。如果不想显示任何内容,可以 return null
.
我有一个 PopoverMenu
组件,我想在其中访问和使用 children
道具。我看过许多与此类似但不够相似的帖子,无法帮助我解决这个问题。
children
可以是标准 HTML 或其他 React 组件。
这是 PopoverMenu
组件:
export const PopoverMenu = (children) =>
{
const [visible, setVisible] = useState(true);
if (visible) {
return (
<ul ref={ node } className="popover-menu">
{ children }
</ul>
)
}
}
...这是正在使用的组件...
<PopoverMenu>
<PopoverMenuItem>
Edit
</PopoverMenuItem>
<PopoverMenuItem>
Delete
</PopoverMenuItem>
</PopoverMenu>
...或者...
<PopoverMenu>
<li>
<a>Edit</a>
</li>
<li>
<a>Delete</a>
</li>
</PopoverMenu>
我已经为 children
尝试了多种类型,但我的 IDE 似乎对所有类型都不满。其中包括:
ReactNode
HTMLElement
ReactChildren
什么类型会给我想要的结果,为什么?
Children的类型应该是ReactNode
。
但是你需要更正道具解构:它应该是({ children })
。
此外,您需要 return else
块中的内容。如果不想显示任何内容,可以 return null
.