【问题标题】:How to separate a series of objects from the object如何从对象中分离出一系列对象
【发布时间】:2021-09-15 10:50:04
【问题描述】:

我正在使用 useReducer 这就是我所拥有的:

const initialState = {
    optionalFilter: {
      take: Math.round((window.innerHeight - 330) / 34),
      page: 1,
    },
    reportFilter: {
      searchItem:[],
      dateFilter: {
        StartDate:new Date(new Date().setDate(new Date().getDate() - 3100)),
        EndDate:new Date(),
      },
     
    }, 
  };
const reducer = (state, action) => {
    switch (action.type) {
      case "changeFilter":
        console.log("action",action.payload)
        return updateObject(state, {
          optionalFilter: updateObject(state.optionalFilter, {
            page: 1,
          }),
          reportFilter: updateObject(state.reportFilter, {
            searchItem: action.payload,
          }),
          reportFilter: updateObject(state.reportFilter.dateFilter, {
            StartDate:new Date(new Date().setDate(new Date().getDate() - 3100)),
        EndDate:new Date(),
          }),
        });
    }
  };

当我想应用填充时。例如,当我得到一个操作控制台时,我有这样一个数组:

action.payload 的控制台==>[{property:"StartDate: , 值:“12.12.12”}{属性:“结束日期:, value:"13.13.12"}{property:"Title: , value:"test"}{property:"name":, 值:“名称”}]

我应该如何将 StartDate 和 EndDate 值放在 state.reportFilter.dateFilter 中,并将其余值放在 searchItem 数组中

【问题讨论】:

  • 能够从对象中删除 add --- delete myObject.StartDate
  • 向对象添加新数据只需执行 myObject['newobject'] = "hello"
  • 你能说明什么是updateObject函数吗?

标签: javascript arrays reactjs reduce use-reducer


【解决方案1】:

请通过替换reducer方法尝试此代码

const reducer = (state, action) => {
    switch (action.type) {
      case "changeFilter":
        console.log("action",action.payload)
        return updateObject(state, {
          optionalFilter: updateObject(state.optionalFilter, {
            page: 1,
          }),
          reportFilter: updateObject(state.reportFilter, {
            searchItem: action.payload.filter(val => val.property !== "StartDate" &&  val.property !== "EndDate");,
          }),
          reportFilter: updateObject(state.reportFilter.dateFilter, {
            StartDate:action.payload.find(val => val.property === "StartDate").value,
        EndDate:action.payload.find(val => val.property === "EndDate").value,
          }),
        });
    }
  };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多