admin on rest自定义过滤器

时间:2018-01-10 21:18:23

标签: reactjs filter admin-on-rest

我正在尝试将自定义过滤器添加到我的列表视图中。之前,我已经设法使用redux-form的Field组件创建自定义输入,并在Edit和Create视图中使用它。现在,当我尝试在Filter组件中使用相同的概念时,似乎道具未定义。我不知道为什么。我想创建自定义过滤器的原因是在时间戳上使用= gte =和= lte =进行过滤。

我想要的:一个自定义输入,我可以在其中验证并对时间戳进行一些计算,然后使用= gte =和= lte =来搜索它。

1 个答案:

答案 0 :(得分:0)

我与您分享了一个对我有用的组件:

DateBetweenInput.js

 import React, { Component } from 'react'
 import { DateInput } from 'react-admin'
 import { addField } from 'ra-core'

class DateBetweenInput extends Component {
  render () {
    const styles = {
      row: {
        display: 'flex',
        flexDirection: 'row',
        alignItems: 'flex-start',
        justifyContent: 'space-between'
      }
    }

    const { resource, source } = this.props

    return (
      <span style={styles.row}>
        <DateInput
          source={`${source}.gt`}
          label={`resources.${resource}.fields.${source}_gt`}
        />
        &nbsp;
        <DateInput
          source={`${source}.lt`}
          label={`resources.${resource}.fields.${source}_lt`}
        />
      </span>
    )
  }
}

DateBetweenInput.defaultProps = {
  addLabel: true,
  label: 'createdAt'
}

export default addField(DateBetweenInput)

然后在您的过滤器上使用:

const PostFilter = (props) => (
  <Filter {...props}>
    <DateBetweenInput source='createdAt' alwaysOn />
  </Filter>
)

此功能现在是GitHub https://github.com/marmelab/react-admin/issues/817上的一个未解决问题