From d27c472bfc034af1345fdd8e08fd69b1479f3422 Mon Sep 17 00:00:00 2001 From: "liyuan.meng" <13149260506@163.com> Date: Thu, 24 Jul 2025 10:46:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20[Checkbox]=20=E8=A7=A3=E5=86=B3Checkbox.?= =?UTF-8?q?Group=20=E5=B5=8C=E5=A5=97=20Select=20=E5=90=8E=EF=BC=8CSelect?= =?UTF-8?q?=20=E7=9A=84=20onChange=20=E4=BA=8B=E4=BB=B6=E8=A2=AB=20Checkbo?= =?UTF-8?q?x=20=E6=8E=A5=E7=AE=A1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/checkbox/index.js | 59 +++++++++++++----------- src/components/complex-checkbox/index.js | 2 + 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/components/checkbox/index.js b/src/components/checkbox/index.js index 7c5797b41..794468a7b 100644 --- a/src/components/checkbox/index.js +++ b/src/components/checkbox/index.js @@ -14,32 +14,37 @@ function Group(props) { let checkedValue = value ? [ ...value ] : value; - const group = Children.map(children, (child) => cloneElement(child, { - disabled: disabled === undefined ? child.props.disabled : disabled, - - checked: - checkedValue === undefined - ? undefined - : checkedValue.indexOf(child.props.value) > -1, - - onChange(checked, val) { - if (checkedValue === undefined) { - checkedValue = []; - } - - const index = checkedValue.indexOf(val); - - if (index > -1 && !checked) { - checkedValue.splice(index, 1); - } - - if (index === -1 && checked) { - checkedValue.push(val); - } - - onChange(checkedValue); - }, - })); + const group = Children.map(children, (child) => { + if (child && child.type && [ 'Checkbox', 'ComplexCheckbox' ].includes(child.type.displayName)) { + return cloneElement(child, { + disabled: disabled === undefined ? child.props.disabled : disabled, + + checked: + checkedValue === undefined + ? undefined + : checkedValue.indexOf(child.props.value) > -1, + + onChange(checked, val) { + if (checkedValue === undefined) { + checkedValue = []; + } + + const index = checkedValue.indexOf(val); + + if (index > -1 && !checked) { + checkedValue.splice(index, 1); + } + + if (index === -1 && checked) { + checkedValue.push(val); + } + + onChange(checkedValue); + }, + }); + } + return child; + }); const classes = classNames(`${classSelector}-group`, { vertical: layout === 'v', @@ -159,4 +164,6 @@ class Checkbox extends React.Component { } } +Checkbox.displayName = 'Checkbox'; + export default Checkbox; diff --git a/src/components/complex-checkbox/index.js b/src/components/complex-checkbox/index.js index 6c17199ad..f98bdd47d 100644 --- a/src/components/complex-checkbox/index.js +++ b/src/components/complex-checkbox/index.js @@ -55,6 +55,8 @@ export default function ComplexCheckbox(props) { ); } +ComplexCheckbox.displayName = 'ComplexCheckbox'; + ComplexCheckbox.propTypes = { content: PropTypes.oneOfType([PropTypes.string, PropTypes.element]), imgSrc: PropTypes.string,