javascript - React - MUI - 无法取消选择多选中的所有项目

标签 javascript reactjs material-ui

我正在使用 MUI“多重选择”/“多个复选框选择”。

我的目标 -> 打开一个模态,设置一些初始值,然后完全控制选择。

我的问题 -> 目前初始项目可以重新选择,并且一旦选择就无法取消选择。

这是一个code sandbox从与此相关的 MUI 问题派生 MUI issue

截至目前 ->我已在沙箱中包含 3 组状态

newOptions is equal to [options[1]]

1 - value: [options[1]]  -> Success
2 - value: options.slice(0,1)  -> Success
3 - value: newOptions  -> Failure

通过取消注释不同的状态,您可以看到所描述的行为,并且这些项目将无法从多选中删除。

我想知道是否有人可以描述这种行为及其解决方案 => 尽管我已经取得了一些成功(使用 [options[x]]),但这并不支持我在项目中所做的事情.

最佳答案

正如https://github.com/mui-org/material-ui/issues/16775中评论的那样,您可以通过使用对象的引用作为默认值来解决此问题,例如https://codesandbox.io/s/create-react-app-vgyz6

当使用对象的引用时,我认为选择组件默认使用引用相等性检查,因此取消选择是有效的。

当您在 Javascript 中使用第三种方式“3 - value: newOptions -> Failure”时,即使两个对象的属性和值相同,但对象本身并不被视为相等。

var jangoFett = {
    occupation: "Bounty Hunter",
    genetics: "superb"
};

var bobaFett = {
    occupation: "Bounty Hunter",
    genetics: "superb"
};

// Outputs: false
console.log(bobaFett === jangoFett);

关于javascript - React - MUI - 无法取消选择多选中的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64127522/

相关文章:

javascript - 有什么方法可以使用 React-Intl 访问当前语言环境吗?

javascript - 如何在所有ajax调用中向URL添加参数?

JavaScript - setTimeout 和 requestAnimationFrame 内的 'this'

javascript - 单击其中的项目时 Div 向上滑动

javascript - 如何使用 ChartJS 创建圆 Angular 矩形

reactjs - React Native 中的调试器问题?

javascript - 如何在React中处理多个DIV的点击事件?

reactjs - Material-UI 从 DataGrid 获取所有行

javascript - 如何为 Material UI 的标题、正文和按钮标签设置自定义字体?

material-ui - XGrid 或数据网格 : How to restrict filter operators in the tool bar?