我有一个按钮集合,我想确保当单击某个按钮时,其他集合中的类似按钮不会被单击。
例如:
<div>
<button>A-1</button>
<button>A-2</button>
<button>A-3</button>
<button>B-1</button>
<button>B-2</button>
<button>B-3</button>
</div>
<div>
<button>A-1</button>
<button>A-2</button>
<button>A-3</button>
<button>B-1</button>
<button>B-2</button>
<button>B-3</button>
</div>
当我单击一个按钮时B-3,我希望B-3除当前按钮之外的所有按钮都是这样的disabled。
例如,我单击按钮B-3,B-3除了当前的之外,所有内容都被禁用。
这实际上很容易做到,但我想将按下的按钮状态存储在数组对象的键的挂钩中。并将按下按钮的状态传递给钩子,如下所示B-*:
const [Buttons, setButtons] = useState([{ ClickedButtons: [null, null] }]);
null #1 - `A-*` кнопки
null #2 - `B-*` кнопки
我不太明白如何将按下按钮的状态输入到这个钩子中并禁用所有类似的按钮。请帮帮我。
<ClickedButtons id={1} />
<ClickedButtons id={2} />
<ClickedButtons id={3} />
<ButtonShow clickFn={btnClick} id={1} buttons={buttons} />
<ButtonShow clickFn={btnClick} id={2} buttons={buttons} />
<ButtonShow clickFn={btnClick} id={3} buttons={buttons} />
我会建议这个选项...
您可以实现此行为,例如,通过将单击所在的“容器”的 ID 保存到按钮状态并在渲染期间进行检查:
clickId === 0,则该按钮处于活动状态例如,我们为每个按钮创建以下结构:
让我们创建一个负责渲染按钮及其状态的组件
在主组件中,我们创建一个处理按钮点击的状态和函数
完整代码:
沙箱中的工作示例