javascript - 当复选框在行项目级别(不是批处理行项目级别,只是主要的)更改时,所有批处理行项目也会更改
问题描述
当“再次使用”复选框在订单项级别(不是批处理订单项级别,只是主要订单项级别)更改时,所有批处理订单项也会更改。
在批次行项目级别更改“再次使用”复选框时,只有一个批次行项目复选框受到影响。
{
/*Use Again*/
}
{
values.transactions.goodsMovements.transactionItems[index].transactionType ===
"2" &&
useAgain === 200 && (
<>
<td>
<MyCheckbox1
id={`transactions.goodsMovements.transactionItems[${index}].transactionLineItems[${i}].useAgain`}
name={`transactions.goodsMovements.transactionItems[${index}].transactionLineItems[${i}].useAgain`}
/>
{tlItems.expanded &&
tlItems.batchSplits.batchSplitLineItems &&
tlItems.batchSplits.batchSplitLineItems.length > 0 &&
tlItems.batchSplits.batchSplitLineItems.map((bd, j) => (
<div>
<MyCheckbox1
id={`transactions.goodsMovements.transactionItems[${index}].transactionLineItems[${i}].batchSplits.batchSplitLineItems[${j}].useAgain`}
name={`transactions.goodsMovements.transactionItems[${index}].transactionLineItems[${i}].batchSplits.batchSplitLineItems[${j}].useAgain`}
/>
</div>
))}
</td>
</>
);
}
解决方案
我不知道MyCheckbox1
你的代码中有什么。您需要进行 3 次更改才能满足您的要求。
checked
为父复选框和子项/子项的复选框显式添加一个属性,以指示该复选框是否被选中。喜欢
<MyCheckbox1
id=....
name=....
checked={IS_USE_AGENT_CHECKED}
/>
IS_USE_AGENT_CHECKED
是每个复选框的状态(对于父级和子级)。您需要IS_USE_AGENT_CHECKED
像以下步骤一样处理代码中的值。
- 处理
onClick
父项的复选框事件,如
<MyCheckbox1
id=....
name=....
checked={IS_USE_AGENT_CHECKED}
onClick={FUNCTION_TO_HANDLE_THE_EVENT}
/>
我不知道你的事件名称MyCheckbox1
,它应该是等价于onChange
或onClick
的,当复选框的状态改变时可以触发。在FUNCTION_TO_HANDLE_THE_EVENT
中,如果checked
状态为真,则设置所有子项为IS_USE_AGENT_CHECKED
真。如果为假,则设置所有孩子的IS_USE_AGENT_CHECKED
假。
- 处理
onClick
子复选框的事件,比如
<MyCheckbox1
id=....
name=....
checked={IS_USE_AGENT_CHECKED}
onClick={FUNCTION_TO_HANDLE_THE_EVENT}
/>
在此FUNCTION_TO_HANDLE_THE_EVENT
,更改IS_USE_AGENT_CHECKED
当前项目。
推荐阅读
- reactjs - 如何使用 framer-motion 和 reactjs 用 svg 线条错开孩子?
- javascript - 如何将 Async.js 并行转换为 Bluebird
- google-chrome - Chrome pdf 查看器在 5 - 10 秒后崩溃
- amazon-web-services - 连接 AWS EC2 实例时超时
- python - 扩展 'cogs.reddit' 引发错误:TypeError: __init__() 缺少 1 个必需的位置参数:'client',我该如何解决这个问题?
- angular - 从“createAction”函数获取类型
- flutter - 在 onChanged TextForm 字段值中将字符串更改为 int
- c# - 是否可以在列表视图单元格上禁用/设置单击效果的颜色?
- php - Laravel 8.x - 在 Cloudflare 和负载均衡器后面运行时出现 403 无效签名
- r - 第一行和第一列作为r中表格的标题