React-Select 破坏 CoreUi 功能
React-Select breaking CoreUi functionalities
我将 @coreui/react
与 React-select
一起使用,问题是在 scoped slots
中返回 Select
元素会破坏 core-ui
功能,例如 搜索 & 排序
然而,如果返回带有文本 Ex 的 <label>
或 <p>
时它工作正常:<label>{item.status}</label>
问题
为什么 Select 组件破坏了功能?
非常感谢任何解决方法/努力
备注
我尝试了 <p hidden >{item.status}</p>
等解决方法,然后渲染 Select
组件,但它不起作用
import React from "react";
import Select from "react-select";
import { CDataTable } from "@coreui/react";
...
<CDataTable
bordered
clickableRows
fields={fields}
hover
items={[...employeeData]}
itemsPerPage={10}
itemsPerPageSelect
loading={tableLoader}
onRowClick={(e) => rowSelectHandler(e)}
pagination
size="sm"
sorter={{ resetable: true }}
striped
tableFilter={{
placeholder: "Filter",
label: "Search:",
}}
scopedSlots={{
status: (item, index) => (
<td style={{ width: "13%" }}>
<Select
id={item.index}
placeholder="Select Status"
isSearchable={false}
className="basic-single"
onChange={(e) => selectChangeHandler(e.value, index)}
classNamePrefix="select"
defaultValue={{
label: item.status,
value: item.status,
color: getBadge(item.status),
}}
// name="color"
// inputValue={item.status}
options={[
{
value: "ACTIVE",
label: "ACTIVE",
color: "#2eb85c",
},
{
value: "DEACTIVE",
label: "DEACTIVE",
color: "#e55353",
},
]}
styles={colourStyles}
/>
</td>
),
}}
/>
...
编辑
接受 antd-select
的答案,如果它适用于 coreui-datatable
我设法组装了一个 codesandbox,也找到了它不起作用的原因,并修复了它。
问题:
https://codesandbox.io/s/twilight-butterfly-itppu?file=/src/App.js
我猜这个 Select 组件有一些使用默认值初始化的内部状态。
然后 table 排序时更改索引(它对数据数组进行排序)并且您使用索引作为 id,因此反应重用相同的元素但无法更新值,因为您只提供 defaultValue.
解决方案:
基本上你应该在 Select
.
中使用 value
而不是 defaultValue
https://codesandbox.io/s/goofy-browser-b02xb?file=/src/App.js
或
根据项目的某些唯一 属性 添加键(不是数组中的索引)。
我将 @coreui/react
与 React-select
一起使用,问题是在 scoped slots
中返回 Select
元素会破坏 core-ui
功能,例如 搜索 & 排序
然而,如果返回带有文本 Ex 的 <label>
或 <p>
时它工作正常:<label>{item.status}</label>
问题
为什么 Select 组件破坏了功能?
非常感谢任何解决方法/努力
备注
我尝试了 <p hidden >{item.status}</p>
等解决方法,然后渲染 Select
组件,但它不起作用
import React from "react";
import Select from "react-select";
import { CDataTable } from "@coreui/react";
...
<CDataTable
bordered
clickableRows
fields={fields}
hover
items={[...employeeData]}
itemsPerPage={10}
itemsPerPageSelect
loading={tableLoader}
onRowClick={(e) => rowSelectHandler(e)}
pagination
size="sm"
sorter={{ resetable: true }}
striped
tableFilter={{
placeholder: "Filter",
label: "Search:",
}}
scopedSlots={{
status: (item, index) => (
<td style={{ width: "13%" }}>
<Select
id={item.index}
placeholder="Select Status"
isSearchable={false}
className="basic-single"
onChange={(e) => selectChangeHandler(e.value, index)}
classNamePrefix="select"
defaultValue={{
label: item.status,
value: item.status,
color: getBadge(item.status),
}}
// name="color"
// inputValue={item.status}
options={[
{
value: "ACTIVE",
label: "ACTIVE",
color: "#2eb85c",
},
{
value: "DEACTIVE",
label: "DEACTIVE",
color: "#e55353",
},
]}
styles={colourStyles}
/>
</td>
),
}}
/>
...
编辑
接受 antd-select
的答案,如果它适用于 coreui-datatable
我设法组装了一个 codesandbox,也找到了它不起作用的原因,并修复了它。
问题:
https://codesandbox.io/s/twilight-butterfly-itppu?file=/src/App.js
我猜这个 Select 组件有一些使用默认值初始化的内部状态。 然后 table 排序时更改索引(它对数据数组进行排序)并且您使用索引作为 id,因此反应重用相同的元素但无法更新值,因为您只提供 defaultValue.
解决方案:
基本上你应该在 Select
.
value
而不是 defaultValue
https://codesandbox.io/s/goofy-browser-b02xb?file=/src/App.js
或
根据项目的某些唯一 属性 添加键(不是数组中的索引)。