Skip to content

Commit

Permalink
feat: checkbox-group for muti-dom onChange
Browse files Browse the repository at this point in the history
  • Loading branch information
ZakaryCode committed Mar 31, 2020
1 parent a40814d commit 7f1e280
Showing 1 changed file with 31 additions and 25 deletions.
56 changes: 31 additions & 25 deletions packages/taro-components/src/components/checkbox/checkbox-group.js
Expand Up @@ -39,37 +39,43 @@ class CheckboxGroup extends Nerv.Component {
const children = Nerv.Children.toArray(this.props.children).map(
(item, i) => {
let _key = item.props.for
const chd = Nerv.Children.toArray(item.props.children).map(ch => {
if (ch && ch.name === 'Checkbox') {
if (ch.props.checked) {
this.state.value[i] = {
name: ch.props.name,
value: ch.props.value,
checked: true
}
} else {
this.state.value[i] = {
name: ch.props.name,
value: ch.props.value,
checked: false
}
if (item.name === 'Checkbox') {
return handleChecked.bind(this)(item, i, _key, name)
} else {
return Nerv.cloneElement(item, '', Nerv.Children.toArray(item.props.children).map(ch => {
if (ch && ch.name === 'Checkbox') {
return handleChecked.bind(this)(ch, i, _key, name)
}

return Nerv.cloneElement(ch, {
onChange: e => this.toggleChange(e, i),
for: _key,
name: name
})
}
return ch
})

return Nerv.cloneElement(item, '', chd)
return ch
}))
}
}
)

return children
}
}

function handleChecked (d, i, key, name) {
if (d.props.checked) {
this.state.value[i] = {
name: d.props.name,
value: d.props.value,
checked: true
}
} else {
this.state.value[i] = {
name: d.props.name,
value: d.props.value,
checked: false
}
}

return Nerv.cloneElement(d, {
onChange: e => this.toggleChange(e, i),
for: key,
name: name
})
}

export default CheckboxGroup

0 comments on commit 7f1e280

Please sign in to comment.