取消选中React应用程序中未选中儿童元素的父复选框

发布于 2025-01-17 11:52:44 字数 2226 浏览 0 评论 0原文

我有一张选择全部检查的支票,以检查所有/取消选中所有子元素,但是当我取消选中任何子元素时,我也想取消选中父元的复选框。 当我选择全部选择时,我可以检查并取消选中,但是当没有选中任何子元素时,都无法实现副主席。

export const List = props => {

    const{startOver} = props;

    const onCheckAllcheckbox = (event) => {
        let _items = props.items.map(item => {
            item.isChecked = event.target.checked
            return item;
        });
        props.setItems(_items);
    }

    const handleCheckChieldElement = (event) => {
        let _items = props.items.map(item => {
            if (item.id == event.target.value) {
                item.isChecked = event.target.checked
            }
            return item;
        })
        props.setItems(_items);
    }
return (
        <Box>
      
            {props.action && (
                <Box horizontal align="center">
              
                 <input type="checkbox"
                                onChange={onCheckAllcheckbox}
                                defaultChecked={true}
                                style={{width: '20px', height: '15px'}}  />
                    <Text>SELECT ALL</Text>
                </Box>
            )}
            <div style={{overflow : 'auto', height : '200px', width : '900'}}>
            <Box type="flat">
                {props.items.map((item, index) => (
                   
                    <Box key={index} horizontal align="center" style={{ margin: '.3rem 0' }}>
                        {props.action && (
                            <input type="checkbox"
                                onChange={handleCheckChieldElement}
                                checked={item.isChecked}
                                value={item.id}
                                style={{width: '20px', height: '15px'}} />
                        )}
                        {props.itemTemplate && props.itemTemplate(item) || (
                            <Text>{item.text}</Text>
                        )}
                    </Box>
                   
                ))}
                
            </Box>
            </div>
        </Box>
    )
}

I have a check for Select All to check all/Uncheck all the child elements but when I uncheck any of the child elements I want to uncheck the parent checkbox as well.
I can check and uncheck all when I select the SELECT ALL, but cannot achieve vice versa when any of the child element is unchecked.

export const List = props => {

    const{startOver} = props;

    const onCheckAllcheckbox = (event) => {
        let _items = props.items.map(item => {
            item.isChecked = event.target.checked
            return item;
        });
        props.setItems(_items);
    }

    const handleCheckChieldElement = (event) => {
        let _items = props.items.map(item => {
            if (item.id == event.target.value) {
                item.isChecked = event.target.checked
            }
            return item;
        })
        props.setItems(_items);
    }
return (
        <Box>
      
            {props.action && (
                <Box horizontal align="center">
              
                 <input type="checkbox"
                                onChange={onCheckAllcheckbox}
                                defaultChecked={true}
                                style={{width: '20px', height: '15px'}}  />
                    <Text>SELECT ALL</Text>
                </Box>
            )}
            <div style={{overflow : 'auto', height : '200px', width : '900'}}>
            <Box type="flat">
                {props.items.map((item, index) => (
                   
                    <Box key={index} horizontal align="center" style={{ margin: '.3rem 0' }}>
                        {props.action && (
                            <input type="checkbox"
                                onChange={handleCheckChieldElement}
                                checked={item.isChecked}
                                value={item.id}
                                style={{width: '20px', height: '15px'}} />
                        )}
                        {props.itemTemplate && props.itemTemplate(item) || (
                            <Text>{item.text}</Text>
                        )}
                    </Box>
                   
                ))}
                
            </Box>
            </div>
        </Box>
    )
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听风念你 2025-01-24 11:52:44

添加检查属性到选择所有输入而不是传递defaultchecked属性。

<Box horizontal align="center">
      <input type="checkbox"
        onChange={onCheckAllcheckbox}
        checked={props.items.every((item) => item.isChecked)}
        style={{width: '20px', height: '15px'}}  />
      <Text>SELECT ALL</Text>
</Box>

Add checked attribute to Select All input instead of passing defaultChecked attribute.

<Box horizontal align="center">
      <input type="checkbox"
        onChange={onCheckAllcheckbox}
        checked={props.items.every((item) => item.isChecked)}
        style={{width: '20px', height: '15px'}}  />
      <Text>SELECT ALL</Text>
</Box>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文