javascript - React 共享状态:突出显示选择了哪个组件
问题描述
我对做出反应还很陌生,并且正在研究现有的大型代码库。
这个网站有一个组件列表(方形块),当我按下其中一个(比如 Block1)时,我希望那个(Block1)从白色变为蓝色背景色。如果我按下另一个块(例如 Block3),那么我希望前一个块(Block1)变回白色,而我刚刚选择的块(Block3)变回蓝色。
我有一个带有返回块列表的功能组件的列表文件,如下所示:
ItemList() {
return ({edge.map() => return <Block />}) //this basically returns like 10 Blocks
}
块组件文件
Block() {
return (<div> blah blah </div>)
}
对我来说最简单的方法是什么?我目前在 Block() 组件内部有一个状态,但是当我按下另一个块时,这不会让我更新,并且希望这个块变回来。
解决方案
- 状态
selectedBlock
应该存储在块中ItemList
并传递给块 ItemList
应该向setSelectedBlock
孩子发送一个函数,该函数将在 onClick 内部调用。- 每个块都会从 map 函数中接收一个键
- 块内检查
bgColor = props.key === props.selectedBlock ? 'blue' : 'white'
- 使用内联 CSS 应用颜色
- 随时提出任何问题!
推荐阅读
- javascript - 如何用点击计数值替换图像而不是添加带有点击计数值的图像?(删除图像+添加新图像)
- arrays - 用 1 和 0 填充矩阵以使其满足给定的行和列总和的程序
- python - 使用抓取的数据创建数据框
- opencv - USB 网络摄像头和可用格式
- python - 如何使用python从语料库中删除单个字符(字母)
- r - 使用字符串向量在数据框中查找字符串
- python - Dockerfile 和入口点["gunicorn" ]
- python - Pyvisa - Pyusb 无法加载大于 1 MB 的序列
- octave - OCTAVE 求解常微分方程
- python - 在 python 中,如何读取 Google Drive 中的大型 CSV?