Admin-on-Rest如何创建自定义Show组件以添加Filter

时间:2017-07-20 19:55:36

标签: admin-on-rest

我想创建一个自定义Show组件,该组件可以使用Filter组件使用的List组件。老实说,我不知道从哪里开始。有人能指出我正确的方向吗?

这是List中使用的方式:

export const LogList = (props) => (
    <List {...props} perPage={100} title="Logs and Reports" filters={< FileFilter/>}>

我希望能够像Show一样使用它:

export const archivedShow = ({ ...props }) => (
        <Show title="Log" {...props} filters={<LogFilter/>} >

1 个答案:

答案 0 :(得分:0)

您可以编写自定义连接组件。然后你可以按照自己的意愿去做。

您可以像任何其他comp一样为show组件提供操作。 https://marmelab.com/admin-on-rest/Show.html#actions

您可以使用此操作填充州内的字段(可能使用自定义缩减器)

然后您的组件可以连接到redux状态。

如下所示

class connectedReferenceInput extends Component {
  render() {
    <ReferenceInput source={this.props.source} >
      <somecomp>
    </ReferenceInput>
  }
}

function mapStateToProps(state, props) {
  return {
    source: state.admin.somefield.source
  };
}

export default connect(mapStateToProps, {
  crudGetList: crudGetListAction
})(ClientInput)

还有在AOR文档中编写减速器的文档。

更多详情: 1)somecomp是您作为referenceInput的子代所需的任何组件 2)somefield是您设置为在连接的过滤器组件和connectedReferenceInput之间传递数据的任何字段。

解决你正在做的事情。

1)创建一个连接组件,您将成为过滤器的子级。这个连接的组件拍摄了一个redux&#39; Action&#39;通过减速器&#39;

改变你州的某些部分

aor docs中提供了编写动作和减速器的文档。

2)创建一个connectedReferenceInput(如上所述),它接收(通过mapStateToProps)您的connectedFilterComp所做的状态更改。使用此方法,您可以为referenceInput创建变量过滤器并显示变量数据。

您基本上使用redux在过滤器和组件之间传递数据。