如何使用 react-select-table 的行作为 react-select 的输入字段的选项
How to use react-select-table's rows as options to react-select's input field
我有一个输入字段,它应该接受来自已设置选项的多个输入。 - 这个输入字段需要像标签输入字段一样出现,所以我使用了 React-select 库:
设置选项将来自 react-bootstrap-table 所以我禁用了 react-select 输入字段中的内置下拉列表。
问题是我无法通过从 react-bootstrap-table.[=14= 删除select行来删除 selected 项目]
我想我在如何在输入字段和 table 之间传递值方面做错了,但无法弄清楚。
问题是您尝试比较两个对象,但是没有通用的方法来确定一个对象等于另一个。
您可以 JSON.stringify
它们并进行比较,但那不是可靠的方法。
相反,您可以按对象键过滤数组,比方说 label
。
在这种情况下,您的函数应如下所示:
const setSelected = (row: any, isSelect: any, rowIndex: any, e: any) => {
if (isSelect) {
setSelectProducts([...selectedProducts, row]);
} else {
const newArray = selectedProducts.filter(
(item) => item.label !== row.label
);
setSelectProducts(newArray);
}
};
这里是codesandbox预览
@编辑
如果你想在 Clear 上做点什么
onChange={(selectedOption, triggeredAction) => {
if (triggeredAction.action === 'clear') {
// Clear happened
}
我有一个输入字段,它应该接受来自已设置选项的多个输入。 - 这个输入字段需要像标签输入字段一样出现,所以我使用了 React-select 库:
设置选项将来自 react-bootstrap-table 所以我禁用了 react-select 输入字段中的内置下拉列表。
问题是我无法通过从 react-bootstrap-table.[=14= 删除select行来删除 selected 项目] 我想我在如何在输入字段和 table 之间传递值方面做错了,但无法弄清楚。
问题是您尝试比较两个对象,但是没有通用的方法来确定一个对象等于另一个。
您可以 JSON.stringify
它们并进行比较,但那不是可靠的方法。
相反,您可以按对象键过滤数组,比方说 label
。
在这种情况下,您的函数应如下所示:
const setSelected = (row: any, isSelect: any, rowIndex: any, e: any) => {
if (isSelect) {
setSelectProducts([...selectedProducts, row]);
} else {
const newArray = selectedProducts.filter(
(item) => item.label !== row.label
);
setSelectProducts(newArray);
}
};
这里是codesandbox预览
@编辑
如果你想在 Clear 上做点什么
onChange={(selectedOption, triggeredAction) => {
if (triggeredAction.action === 'clear') {
// Clear happened
}