如何解决过滤嵌套对象
我想用“statut”过滤。 这就是我的成员 JSON 的样子。 JSON
我设法访问了 id(示例中为 7)并且当 id == 7 时过滤器工作良好 Filter work fine code
但是,当我尝试检索成员的“状态”时,它不起作用。 Does not work Does not work
你有什么想法吗?
对不起我的英语。 ^^
解决方法
import * as React from "react";
import AccessTimeIcon from "@material-ui/icons/AccessTime";
import MonetizationOnIcon from "@material-ui/icons/MonetizationOnOutlined";
import MailIcon from "@material-ui/icons/MailOutline";
import { FilterList,FilterListItem,FilterLiveSearch } from "react-admin";
import {
endOfYesterday,startOfWeek,subWeeks,startOfMonth,subMonths,} from "date-fns";
import { Card as MuiCard,CardContent,withStyles } from "@material-ui/core";
const LastVisitedFilter = () => (
<FilterList label="Dernières visites" icon={<AccessTimeIcon />}>
<FilterListItem
label="Aujourd'hui"
value={{
created_at_gte: endOfYesterday().toISOString(),created_at_lte: undefined,}}
/>
<FilterListItem
label="Cette semaine"
value={{
created_at_gte: startOfWeek(new Date()).toISOString(),}}
/>
<FilterListItem
label="La semaine dernière"
value={{
created_at_gte: subWeeks(startOfWeek(new Date()),1).toISOString(),created_at_lte: startOfWeek(new Date()).toISOString(),}}
/>
<FilterListItem
label="Ce mois-ci"
value={{
created_at_gte: startOfMonth(new Date()).toISOString(),}}
/>
<FilterListItem
label="Le mois dernier"
value={{
created_at_gte: subMonths(startOfMonth(new Date()),created_at_lte: startOfMonth(new Date()).toISOString(),}}
/>
</FilterList>
);
const HasOrderedFilter = () => (
<FilterList label="Has ordered" icon={<MonetizationOnIcon />}>
<FilterListItem
label="True"
value={{
nb_commands_gte: 1,nb_commands_lte: undefined,}}
/>
<FilterListItem
label="False"
value={{
nb_commands_gte: undefined,nb_commands_lte: 0,}}
/>
</FilterList>
);
const HasNewsletterFilter = () => (
<FilterList label="Has newsletter" icon={<MailIcon />}>
<FilterListItem label="True" value={{ has_newsletter: true }} />
<FilterListItem label="False" value={{ has_newsletter: false }} />
</FilterList>
);
const KichtaStatut = () => (
<FilterList label="Statut kichta" icon={<MailIcon />}>
<FilterListItem label="Bleu" value={{ informations_personnelles.statut: "Vert" }} />
</FilterList>
);
const Card = withStyles((theme) => ({
root: {
[theme.breakpoints.up("sm")]: {
order: -1,// display on the left rather than on the right of the list
width: "15em",marginRight: "1em",},[theme.breakpoints.down("sm")]: {
display: "none",}))(MuiCard);
const FilterSidebar = () => (
<Card>
<CardContent>
<FilterLiveSearch label="Rechercher par ID" source="id" />
<LastVisitedFilter />
<KichtaStatut />
{/* <HasOrderedFilter /> */}
{/* <HasNewsletterFilter /> */}
</CardContent>
</Card>
);
enter code here
export { FilterSidebar };
它是这个过滤器 =>
const KichtaStatut = () => (
<FilterList label="Statut kichta" icon={<MailIcon />}>
<FilterListItem label="Bleu" value={{ informations_personnelles.statut: "Vert" }} />
</FilterList>
);
,
我认为您发布的代码可能存在编译错误。 试试这个:
const KichtaStatut = () => (
<FilterList label="Statut kichta" icon={<MailIcon />}>
<FilterListItem
label="Bleu"
// Note the quotes around the field name
value={{ 'informations_personnelles.statut': "Vert" }}
/>
</FilterList>
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。