微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在列表之间切换时重置过滤器值

如何解决在列表之间切换时重置过滤器值

我有一个包含多个列表资源的 react-admin 应用,并且只想在我在列表之间切换(在公司/规则/查找之间切换)时清除过滤器。目前,我正在为每个列表(RuleFilter 部分)使用 RuleList.js显示解决方案。但是,每次显示/编辑列表中的元素时,这也会重置过滤器。我不知道是否有一种方法可以检测您何时在公司/规则/查找之间单击以清除过滤器。

App.js

import * as React from "react"
import { Admin,Resource } from 'react-admin'

import dataProvider from './dataProvider'

import companies from './companies'
import rules from './rules'
import lookups from './lookups'

const App = () => (
  <Admin
    dataProvider={dataProvider}>
    <Resource name="companies" {...companies} />
    <Resource name="rules" {...rules} />
    <Resource name="lookups" {...lookups} />
  </Admin>
)

export default App

RuleList.js

import React,{ useState,useEffect } from 'react'
import { List,Datagrid,TextField,EditButton } from 'react-admin'

const RuleFilter = (props) => {
  useEffect(() => {
    const { setFilters } = props
    return () => setFilters({ regex: '' })
  },[])

  return (
    <Filter {...props}>
      <TextInput label="Search" source="regex" alwaysOn />
    </Filter>
  )
}

const RuleList = (props) => {    
  return (
    <List {...props}
      filters={<RuleFilter />}
      exporter={false}>
      <Datagrid rowClick="edit">
        <TextField source="id" />
        <TextField source="regex" />
        <EditButton />
      </Datagrid>
    </List>
  )
}

export default RuleList

用于规则的 index.js

import RuleList from'./RuleList'
import RuleEdit from './RuleEdit'
import RuleCreate from './RuleCreate'

const rules = {
  list: RuleList,edit: RuleEdit,create: RuleCreate,}

export default rules

Clear the search field when clicking companies or rules

解决方法

  1. 使用 redux-persist,并将过滤器保存在 Store 中, 或
  2. 使用 localStorage 保存您的过滤器

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。