gpt4 book ai didi

javascript - 使用 React 单击另一个表复选框来选择表的所有复选框

转载 作者:行者123 更新时间:2023-12-01 01:09:55 25 4
gpt4 key购买 nike

我在表格中为每个td都有复选框。现在,我有另一张表,其中有一个复选框。检查此选项后,我想选择第一个表的所有其他复选框。

这是代码,

<tr key={key}>
<td align="center"> <input type="checkbox" name="myTextEditBox" value="checked" /></td>
<td>{item.technology}</td>
</tr>

对于我做的第二个表,

handleCheckBox = () => {
console.log("callling the handle change");
this.setState({
isCheckd: !this.state.isCheckd
})
}

constructure(props) {
this.state = { isCheckd: false }
<td className="text-right mr-1"><input type="checkbox" checked={this.state.isCheckd} onChange={this.handleCheckBox} /></td>
}

现在,在此单击处理程序中可以正常工作。但是,现在如何在不使用 jquery 的情况下选择另一个表的所有其他复选框。

谁能帮我解决这个问题吗?

尝试过解决方案 -

state = { dynamicProp: {},  isCheckd: false,}

handleCheckBox = () => {
this.setState({
isCheckd: !this.state.isCheckd
}, () => {
this.props.jobs.forEach((item) =>
this.setState(prevState => ({
dynamicProp: {
...prevState.dynamicProp,
[item.jdName]: prevState.isCheckd
}
})
))
});
}

handleTableCheckboxChange = (e) => {
const target = e.target.name;
const checked = e.target.checked;
this.setState(prevState => ({
dynamicProp: {
...prevState.dynamicProp,
[target]: checked
}
}), () => {
const result = this.allTrue(this.state.dynamicProp);
this.setState({
isCheckd: result ? false : true
})
})
}



allTrue(obj) {
for (var o in obj)
if (!obj[o]) return true;
return false;
}

然后将所有 props 传递给子元素。现在,我现在面临的问题是在handleTableCheckboxChange 方法中,我没有得到您使用过滤器获取未选中元素的方式。然后全选检查将被更改。

最佳答案

我不太理解你的代码,所以我从你写的内容中理解它。然后我为您创建了一个工作示例。希望对您有帮助!

UPDATED CODE

const Table=(props)=>(
<table>
{
props.items.map((item, i) => (
<tr key={i}>
<td>
<input type="checkbox" checked={props.parentState[item.name]} name={item.name} onChange={props.handleChange} />
</td>
<td>{item.value}</td>
</tr>
))
}
</table>
);

class App extends React.Component {
items = [
{
value: 'EN',
name: 'field1'
},
{
value: 'IT',
name: 'field2',
}
];

state = {
checkAll: false,
};

render() {
return (
<div>
Check All
<input type="checkbox" onChange={this.handleCheckAll} checked={this.state.checkAll}/>
<Table
handleChange={this.handleChange}
items={this.items}
parentState={this.state}
/>
</div>
);
}

handleCheckAll = () => {
this.setState({
checkAll: !this.state.checkAll
}, () => {
this.items.forEach((item) => this.setState({ [item.name]: this.state.checkAll}))
});
}

handleChange = (e) => {
this.setState({
[e.target.name]: e.target.checked
}, () => {
const uncheckedItems = this.items.filter((item) => !this.state[item.name])

this.setState({
checkAll: uncheckedItems.length === 0?true:false
});

});
}
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root"></div>

关于javascript - 使用 React 单击另一个表复选框来选择表的所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55254435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com