【发布时间】:2019-09-06 00:08:37
【问题描述】:
我有一个下拉组件,我希望能够在您单击其他下拉菜单项时自动关闭上一个下拉菜单。我有下拉组件工作,但在选择新项目后我无法让它们关闭。此外,如果您单击页面上的任意位置,我想关闭这些项目。任何帮助将不胜感激,在此先感谢!
export const Dropdown: FC<Props> = ({ passedBindings }) => {
let [isDropdownOpen, setDropdownOpen] = useState(false);
const [ firstMediaBindings, ...restMediaBindings ] = bindings.mediaFlagBindings||[{}];
const toggleDropdown = () => {
setDropdownOpen(!isDropdownOpen)
};
return (
<div { ...optionalAttributes }>
<Container>
{
firstMoleculeMediaFlag()
}
{isDropdownOpen && restMediaBindings.length > 0 &&
<Container passedBindings={({
padding: {
direction: "all",
size: "size2"
}
})}>
{
restMediaBindings.map((mediaFlagBindings: IMoleculeMediaFlag, index: number) => {
return (
<Container
key={index}
passedBindings={({
padding: {
direction: "all",
size: "size1"
}
})}>
<MediaFlag key={index} passedBindings={mediaFlagBindings} />
</Container>
)
})
}
</Container>
}
</Container>
</Container>
</div>
)
``
【问题讨论】:
-
“页面上的任何地方”可以通过透明的模态 div 或 on blur 事件来实现;不过有好处也有坏处!
标签: javascript reactjs typescript state react-hooks