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

过滤嵌套对象

如何解决过滤嵌套对象

我想用“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 举报,一经查实,本站将立刻删除。