【问题标题】:React AntD - Select resetting after filteringReact AntD - 过滤后选择重置
【发布时间】:2018-10-16 08:23:09
【问题描述】:

我有一个表,其中包含您可以选择的项目列表:

在任何页面中选择项目都可以正常工作。我最近介绍了过滤结果的上述搜索选项。但是,如果我过滤然后单击以选择一个项目,它会删除以前设置的选择。我试图通过选择数组,但似乎无法链接这些点。

过滤器代码:

        filterIcon: <span/>,
        filterDropdownVisible: true,
        filterDropdown: (
          <div className={styles.listFilterDropdownModal}>
            <Input
              placeholder="Search list..."
              value={listModalFilterString}
              onChange={(ev) => dispatch({
                type: "jobs/setListModalFilterString",
                listModalFilterString: ev.target.value,
              })}
            />
          </div>
        ),

这基本上被传递到数据源中:

       dataSource={(list || [])
        .filter(strategy => {
          // console.log(list);
          // return true;
          return list.name.toLowerCase().indexOf(listModalFilterString.toLowerCase()) !== -1
        })
        .map(list => ({
        key: `list_${list.id}`,
        ...list,
      }))}

然后是行选择代码 - 我认为这是导致问题的原因:

       rowSelection={{
        selectedRowKeys: (listIds || defaultListIds).map(k => `list_${k}`),
        onSelect: (r, s, selectedRows) => dispatch({
          type: "job/setListIds",
          listIds: selectedRows.map(row => row.id),
        }),
      }}

上面调用的函数就是这样做的:

setListIds: (state, {listIds}) => ({...state, listIds})

【问题讨论】:

    标签: reactjs antd


    【解决方案1】:

    你可以用filterDropdown点赞

      filterDropdown: ({
                setSelectedKeys,
                selectedKeys,
                confirm,
                clearFilters,
            }) => {
                return (
                    <div
                        style={{
                            padding: "12px",
                            background: "#fff",
                        }}
                    >
                        <Input
                            placeholder={`Search ${dataIndex}`}
                            value={selectedKeys[0]}
                            onPressEnter={() => confirm()}
                            onChange={(e) =>
                                setSelectedKeys(
                                    e.target.value ? [e.target.value] : []
                                )
                            }
                            style={{ marginBottom: 8, display: "block" }}
                        />
                        <Space>
                            <Button
                                type="primary"
                                onClick={() => confirm()}
                                icon={<SearchOutlined />}
                                size="small"
                                style={{ width: 90 }}
                            >
                                Search
                            </Button>
                            <Button
                                onClick={() => {
                                    clearFilters();
                                    confirm();
                                }}
                                size="small"
                                style={{ width: 90 }}
                            >
                                Reset
                            </Button>
                        </Space>
                    </div>
                );
            },

    【讨论】:

      猜你喜欢
      • 2022-01-21
      • 2020-11-09
      • 2021-01-01
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 2020-01-02
      相关资源
      最近更新 更多