【发布时间】:2017-07-11 13:49:21
【问题描述】:
我有一个组件,我想检查它的子组件,如果子组件是特定组件,我想在它上面设置一些其他的 props 定义,如下所示:
import React from 'react'
function RadioOption(props) {
return (
<label>
<input type="radio" value={props.value} name={props.name} />
{props.label}
</label>
)
}
function renderChildren(props) {
return React.Children.map(props.children, child => {
if (child.type === RadioOption)
return React.cloneElement(child, {
name: props.name
})
else
return child
})
}
function RadioGroup(props) {
return (
<div class="radio-group">
{renderChildren(props)}
</div>
)
}
function WhereImUsingRadioGroups() {
return (
<RadioGroup name="blizzard-games">
<RadioOption label="Warcraft 2" value="wc2" />
<RadioOption label="Warcraft 3" value="wc3" />
<RadioOption label="Starcraft 1" value="sc1" />
<RadioOption label="Starcraft 2" value="sc2" />
</RadioGroup>
)
}
在这个例子中一切都很好,但是当我想把孩子放在一个包装器中时,我无法检查它。我可以访问包装器。
..
<RadioGroup name="blizzard-games">
<span className="wrapper"><RadioOption label="Warcraft 2" value="wc2" /></span>
<RadioOption label="Warcraft 3" value="wc3" />
<RadioOption label="Starcraft 1" value="sc1" />
<RadioOption label="Starcraft 2" value="sc2" />
</RadioGroup>
..
我想检查包装器的孩子,嗯。我怎样才能实现它?
【问题讨论】:
-
也许您的 RadioOption 组件可以处理有条件地在包装器内呈现其标签。这将为您提供可以访问所有道具的单一后代。
标签: javascript reactjs components