javascript - React 问题 - 您如何控制网格中特定“图块”的状态?
问题描述
我正在创建一个基于网格的反应网站。它使用 4x4 网格,包含 16 个方形“图块”,请参见图片。无论如何,我希望能够输入文本并更改其中 9 个图块(图像中的蓝色图块)的状态 - 那么最好的方法是什么?创建一个处理所有 9 个图块的单独组件,还是我必须为 9 个图块中的每一个创建一个组件?下面也是我的主要网格组件的代码。谢谢大家!
render(){
return(
<div className = 'grid-position'>
<div className ='grid'>
<div className = 'box date0'></div>
<div className = 'box date1'>Week Starting: <br/>1st June</div>
<div className = 'box date2'>Week Starting:</div>
<div className = 'box date3'>Week Starting:</div>
<div className = 'box task1'>Clean Kitchen</div>
<div className = 'box card1'></div>
<div className = 'box card2'></div>
<div className = 'box card3'></div>
<div className = 'box task2'>Buy flat supplies</div>
<div className = 'box card4'></div>
<div className = 'box card5'></div>
<div className = 'box card6'></div>
<div className = 'box task3'>Wash dishtowels</div>
<div className = 'box card7'></div>
<div className = 'box card8'></div>
<div className = 'box card9'></div>
</div>
</div>
)
解决方案
您可以创建一个代表 9 个框之一的通用组件。
然后在您的父母中,您将管理数组中这 9 个框的状态,并通过循环遍历该数组来呈现它们。
挂钩
function ParentComponent() {
const [boxValues, setBoxValues] = useState(['a','b','c','d','e','f','g','h','i']);
return (
<React.Fragment>
{boxValues.map((boxText, idx) => <ChildComponent key={`${boxText}-${idx}`} text={boxText} idx={idx} />}
</React.Fragment>
)
}
function ChildComponent({text, idx}){
return (
<div className={`box-card-${idx}`} />
)
}
由于这是一个简单的示例,因此它们基本相同。最大的不同是状态声明:
课程:
class ParentComponent extends React.Component {
constructor(props) {
this.state = {
boxValues: ['a','b','c','d','e','f','g','h','i']
}
}
return (
<React.Fragment>
{this.state.boxValues.map((boxText, idx) => <ChildComponent key={`${boxText}-${idx}`} text={boxText} idx={idx} />}
</React.Fragment>
)
}
希望这可以帮助!
推荐阅读
- laravel - 从 Mac Time Machine 恢复以前的 Laravel Homestead
- javascript - VueJS / Jest - 测试是否从组件的方法调用导入的函数
- python - 使用 3 列在 pandas 中合并 2 个数据框
- google-bigquery - Bigquery:通过通用表达式语言 (CEL) 条件授予对特定表的权限
- reactjs - React - 使用 Immer.js 的 Redux
- javascript - 从列表js中获取3个具有概率的随机数
- google-chrome - 调用 showOpenFilePicker :调用类方法时如何避免“必须来自手势”
- sql-server - 在 SQL Server 中获取重复行
- go - 如何处理低内存占用的大文件上传?
- javascript - Postgres检查表的列中是否存在值