首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React下拉菜单立即打开所有下拉菜单

React下拉菜单立即打开所有下拉菜单
EN

Stack Overflow用户
提问于 2020-01-13 12:56:55
回答 1查看 1.3K关注 0票数 0

我已经创建了一个简单的下拉菜单使用反应挂钩。它可以像我想要的那样工作,只有一个例外--它同时打开所有下拉菜单。考虑到我使用的是用于所有下拉实例的单一状态,这是有意义的:

代码语言:javascript
复制
const [open, setOpen] = useState(false)

然后,当有人单击下拉菜单时,我使用onClick (和onBlur)设置状态:

代码语言:javascript
复制
onClick={() => setOpen(state => !state)}
onBlur={() => setOpen(false)}

open设置为true时,下拉菜单设置为display: block;。当它是false时,它被设置为display: none; --这是在css中设置的(使用样式化的组件)。

因此,对于一个下拉菜单来说,这一切都很好--问题是,下拉菜单的每个实例都连接到了open状态。这意味着,如果打开设置为true,那么每个下拉菜单都会显示-- false,它们都不会显示。

如何修改下拉菜单,以便只切换正在单击的下拉菜单?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-13 13:45:53

如果您要多次使用下拉列表,那么您应该做的是将其作为一个组件,以便每个组件都控制自己的状态。

代码语言:javascript
复制
const Dropdown =() => {
    const [open, setOpen] = useState(false);

    onClick=() => setOpen(state => !state)
    onBlur=() => setOpen(false)
    return (<input onClick={this.onClick}>
        ....
    </input>)
}

const otherComponent = () => {
    return (
       <div>
          <Dropdown/>
          <Dropdown/>
       </div>
     )
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59717109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档