【发布时间】:2022-01-24 12:02:39
【问题描述】:
我在列表页面的抽屉中使用编辑表单,但我尝试找到一种从那里访问记录或过滤器属性的方法,但没有成功。我需要将 match.params.id 替换为 coupound id ({id : { id : 1, category : 2}}),因为我的 Tag ressource 是一个以 category 作为输入参数的存储过程
你有什么想法吗?
示例代码:
import { connect } from 'react-redux';
import compose from 'recompose/compose';
import { push } from 'react-router-redux';
import { withStyles } from '@material-ui/core';
import { Datagrid, List, TextField, EditButton, Filter, TextInput } from 'react-admin';
import React from 'react';
import { Route } from 'react-router';
import { Drawer } from '@material-ui/core';
import TagEdit from './TagEdit';
const styles = {
drawerContent: {
width: 300
}
};
const TagFilters = (props) => (
<Filter {...props} variant="standard">
<TextInput label="Category" source="category" alwaysOn />
<TextInput label="Name" source="name" alwaysOn />
</Filter>
);
class TagList extends React.Component {
render() {
const { push, classes, ...props } = this.props;
return (
<Fragment>
<List
{...props}
sort={{ field: 'name', order: 'ASC' }}
filters={<TagFilters />}
>
<Datagrid>
<TextField source="category" />
<TextField source="name" />
<EditButton />
</Datagrid>
</List>
<Route path="/tags/:id">
{({ match }) => {
const isMatch =
match &&
match.params &&
match.params.id !== 'create';
return (
<Drawer
open={isMatch}
anchor="right"
onClose={this.handleClose}
>
{isMatch ? (
<TagEdit
className={classes.drawerContent}
id={isMatch ? match.params.id : null} // <------------- here I'd like to access to row record object or filter value ----------------------
onCancel={this.handleClose}
{...props}
/>
) : (
<div className={classes.drawerContent} />
)}
</Drawer>
);
}}
</Route>
</Fragment>
);
}
handleClose = () => {
this.props.push('/tags');
};
}
export default compose(
connect(undefined, { push }),
withStyles(styles)
)(TagList);```
【问题讨论】:
标签: reactjs filter react-admin drawer