【发布时间】:2018-12-02 22:12:23
【问题描述】:
我正在使用 react 并将一些数据映射到它们自己的分组中。一旦它们被映射到一个组中,我就会将这些项目映射到它们来自的组中。
问题我得到的是我仍然只能选择一个单选按钮,而我应该能够从每个组中选择一个。我正在为<Radio Group> 使用material-ui。
https://codesandbox.io/s/9lz7q7557w
将新排序的键(lodash)映射到渲染中:
{data.length > 0 ?
Object.keys(groups).map((item, index) => this.renderPlayerListItem(item, groups))
:
<div className="text-center">
NO RESULTS
</div>
}
然后将组项映射到单个返回:
<React.Fragment>
<h2>{item}</h2>
{groups[item].map((person, i) =>
<RadioGroup
aria-label="matches"
name="matches"
value={String(this.state.value)}
style={{ display: 'block' }}
>
<FormControlLabel
onClick={e => this.handlePlayerToggle(e)}
checked={this.state.checked}
key={String(person.Id)}
value={String(person.Id)}
control={<Radio color="primary" />}
label={
<div>
{person.firstName} {person.lastName}
</div>
}
/>
</RadioGroup>
)}
</React.Fragment>
https://codesandbox.io/s/9lz7q7557w - 我把一些东西放在一起作为例子。不幸的是同样的结果。任何帮助,将不胜感激。如果我走错了路,欢迎任何替代预期结果的方法。
更新:我认为问题在于价值。每个无线电输入都有一个值 1,2,3,4。我觉得应该是每组1,2和1,2
【问题讨论】:
-
HTML 单选按钮通过
name属性分组。对于每个组,尝试使用不同的name。 -
是的,我尝试过调用名称 {groups},因为这会将它们命名为不同的名称
-
称他们为 name={item} 会在组之间提供不同的名称
-
每组中的 1,2 和 1,2 会给您一个问题,即根据当前逻辑从两个组中一次选择 1 个或从两个组中一次选择 2 个。
-
这里的问题是
value状态导致您一次只能设置一个。您必须将其分配或将其分解为具有自己的切换状态的每个组,该状态满足每个组选择的值。这导致您一次只能设置一个切换。
标签: javascript reactjs lodash material-ui