javascript - 在 React 中使用子项和父项留下嵌套的复选框单击
问题描述
我有一个函数,它从包含嵌套值(具有多层的父级和子级)的 json 接收值,并且该函数为每个项目设置一个复选框,其子级位于其各自的父级之下。
单击父复选框时我需要帮助,所有子复选框都将被选中,当单击子复选框且未单击其他子复选框时,如果只有一个子元素,父元素将处于“不确定”状态复选框并单击它或单击所有子元素,然后选择父元素。
我的代码:
CheckboxItem 组件:
import { useState } from "react";
import Checkbox from "react-three-state-checkbox";
export function CheckboxItem(props) {
const [isChecked, setIsChecked] = useState(false);
function clickCheckbox() {
setIsChecked(!isChecked);
}
return (
<>
<Checkbox
checked={isChecked}
// indeterminate={props.indeterminate}
onChange={clickCheckbox}
/>
{props.children}
</>
);
}
ChildrenMap 组件:
import { CheckboxItem } from "../CheckboxItem";
import * as S from "./styled";
export function ChildrenMap({ itens }) {
const filhos = Object.values(itens);
return (
<div>
{filhos.map((item, i) => (
<S.Itens key={i}>
<CheckboxItem>
{item.name}
</CheckboxItem>
<ChildrenMap itens={item.children} key={i} />
</S.Itens>
))}
</div>
);
}
主文件:
import React from "react";
import ReactDOM from "react-dom";
import { ChildrenMap } from "./components/ChildrenMap";
import data from "./data.json";
function App() {
return (
<>
{data.itens.map((item, i) => (
<div key={i}>
<ChildrenMap itens={item} key={i} />
</div>
))}
</>
);
}
解决方案
推荐阅读
- google-tag-manager - 为什么 GTM 不执行我的自定义 HTML 标记?
- javascript - 我在 ISO8601 中需要很多日期
- javascript - TypeError: app.address 不是使用 chai-http 的函数
- c++ - Check same enum, C++
- javascript - 使用 Vue Router 滚动到锚点
- python - 根据多列的条件从另一个数据框中更新列的某些值
- graphql - 如何解决“有效负载不可序列化:将循环结构转换为 JSON”错误?
- cadence-workflow - cadence go-client/client 到达服务器以获取工作流导致恐慌
- google-bigquery - 如何为 BigQuery 中的计划查询指定查询参数?
- .net - dotnet 5 和 Xamarin Android:找不到导入的项目“Xamarin.Android.CSharp.targets”