javascript - react Hook 。单击时如何使其他项目(当前项目除外)停用

标签 javascript reactjs react-hooks listitem

我有元素 list 。 当我单击一个项目时,其他项目就会停用,同步项目的最佳做法是什么? 那么事件项只能同时是其中之一?

我的代码: https://codesandbox.io/s/deezer-music-widget-s4dli

错误案例的视觉示例(2个事件项目) screenshot

最佳答案

总体思路是将当前选定的项目存储在父列表中,并在渲染器中将 activeselected 标志传递给选定的项目。概念示例:

function ListOfItems(props) {
  const [selection, setSelection] = useState();

  return (
    <ul>
      {props.list.map(item => (
        <ListItem
          key={item.key}
          active={item.key === selection}
          handleClick={setSelection}
          content={item.content}
        />
      ))}
    </ul>
  );
}

function ListItem(props) {
  return (
    <li
      className={props.active ? 'active' : null}
      onClick={() => props.handleClick(props.key)}>
      {props.content}
    </li>
  );
}

关于javascript - react Hook 。单击时如何使其他项目(当前项目除外)停用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60696481/

相关文章:

javascript - 避免点击按钮时自动刷新

javascript - 手动从 TextField 选择组件、Material UI 和 React 中失去焦点

reactjs - 在单击按钮时 react 添加和删除组件

javascript - 测试 redux 表单失败 - typeError formProps.handleSubmit 不是函数

javascript - 如何找到 "SyntaxError: JSON.parse: unexpected character"的原因

javascript - 显示数据列表标签但提交实际值

javascript - 管理渲染 Prop 函数中的本地状态

javascript - 使用 typescript react redux 设置 reducer

Reactjs - 方法给出错误

javascript - 如何在 React Hooks 中实现 Vue watcher