材质UI选择多个组件使用对象中的值属性,增加重复条目。

问题描述 投票:1回答:1

我有一个多重选择,我将一个对象传入带有结构的value属性。

enter image description here

选择组件的结构是这样的

<Select
            multiple
            value={entities}
            onChange={handleChange}
            input={<Input />}
            renderValue={(selected) => (
              <div className={classes.chips}>
                {selected.map((value) => (
                  <Chip
                    key={value.entityId}
                    label={value.entityName}
                    className={classes.chip}
                  />
                ))}
              </div>
            )}
          >
            {props.entityList.map((item, index) => (
              <MenuItem key={item.entityId} value={item}>
                {item.entityName}
              </MenuItem>
            ))}
          </Select>

当选择弹出时,它显示的实体名称是正确的,但在下拉菜单中并没有显示它被选中。

如果我在下拉菜单中选择了这个项目,它就会添加另一个具有相同id和相同名称的条目,而不是删除已经存在的项目,这个新添加的重复项目可以被删除,并且在选择时被高亮显示,所以这个功能有点工作。

我正在存储 entities 的状态下,像这样从父组件进来的。

enter image description here

解决方案:

我已经确保在整个选择过程中使用了相同的对象,初始对象与在改变函数中分配的对象不一样,这解决了我的问题。

const [entities, setEntity] = React.useState(
props.entityList.filter((e) =>
  props.assignedEntities.some((ae) => e.entityId === ae.entityId)
)

);

reactjs react-redux material-ui multi-select
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.