javascript - 如何仅在reactjs中向单击的元素添加类?

标签 javascript reactjs

我有从 api 创建的动态菜单项。我正在调用类更改函数 onClick,但类正在添加到所有菜单中。我需要将类添加到仅单击的元素而不是整个菜单列表,下面是我的代码。

 {menuSideBar.map(menu => (
            <ListItem
              className={SideMenuClass.join(" ")}
              onClick={this.toggleClass.bind(this)}
              button
            >
              <ListItemIcon className="sidebar_menu_icons">
                <SendIcon />
              </ListItemIcon>
              <Link className="sidebar_menu_links"  to={menu.url != "" ? "/" + menu.url : "#"}>
                <ListItemText inset primary={menu.resourceValue} />
              </Link>
            </ListItem>
          ))}

下面是函数

  toggleClass = () => {
    this.setState({ addClass: !this.state.addClass });
  };

  let SideMenuClass = ["sidebar_menu_list"];
    if (this.state.addClass) {
    SideMenuClass.push("selected_sidebar_menu");
 }

请帮助我如何向仅单击的元素添加类?

谢谢。

最佳答案

您可以将所选项目的 ID 保存为状态数组

{menuSideBar.map(menu => (
<Item
  className={this.state.ids.includes(menu.id) ? 'active' : ''} 
  onClick={() => {
    this.setState(oldState => ({
      ids: oldState.ids.includes(menu.id) ? oldState.ids.filter(x => x !== menu.id) : [...oldState.ids, menu.id]
    }));
  }} 
  button
/>
))}

示例:https://codesandbox.io/s/4wv6n31q90?fontsize=14

<小时/>

或者,如果您只需要选择最后一个:

{menuSideBar.map(menu => (
<Item
  className={this.state.lastClicked === menu.id ? 'active' : ''} 
  onClick={() => {
    this.setState({lastClicled: menu.id});
  }} 
  button
/>
))}

关于javascript - 如何仅在reactjs中向单击的元素添加类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022797/

相关文章:

javascript - 如何每 10 秒发出一次 Ajax 请求(长轮询除外)?

javascript - 使用 CSS/Js 的文本动画无法正常工作

javascript - 如何将 Shadow DOM delegatesFocus 选项与 Polymer 一起使用?

javascript - Material UI 中的嵌套按钮 : how to disable ripple effect of container button while clicking on a child button?

javascript - 如何在 React 网站中使用中型小部件

javascript - Warning : flattenChildren(. ..): Encountered two children with the same key/Child keys must be unique

javascript - 如何不映射缺少子值的对象

reactjs - 如何为 JSXTransformer 正确包装几个 TD 标签?

Javascript - 删除按钮和 parent

javascript - 检索帖子参数