【问题标题】:setstate object:{array:[]} in reactjs how could i add the **key and value inside the array which is in the state object**?reactjs中的setstate object:{array:[]}我如何在状态对象**中的数组中添加**键和值?
【发布时间】:2020-09-20 23:51:21
【问题描述】:

状态对象中数组内的键和值

this.state = { 频率: { 天: [], 开始日期: ””, 自定义日期:“”}, };

如何在 days 数组中添加关键广告值?

【问题讨论】:

标签: javascript arrays reactjs


【解决方案1】:

您可以像这样使用setState 修改您的状态:

this.setState({frequency: {...this.state.frequency, days: [...this.state.frequency.days, day]}});

【讨论】:

  • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值.
【解决方案2】:
function addKeyValue(key, value) {

  this.setState(state => ({
    ...state,
    frequency: {
       ...state.frequency,
       days: [...state.frequency.days, {[key]: value}]
    }
  })
}

--编辑

删除密钥有点棘手。

function removeKeyValue(key, value) {

  this.setState(state => {
    const days = state.frequency.days;
    const dayIndex = days.findIndex(pr => pr[key] === value);
    const day = {...days[dayIndex]};
    delete day[key];

    return {
      ...state,
      frequency: {
         ...state.frequency,
         days: [...days.slice(0, dayIndex),
            day,
            ...days.slice(dayIndex + 1)]
      }
    }
  }
}

【讨论】:

  • 坦克很多,我怎么能删除键和值..?
  • 更新了答案。如果您不想删除特定索引中的项目中的键,则必须稍微更改功能
  • 实际上它不起作用...我正在使用数组仅添加值作为要求.. this.setState( (state) => ({ ...state, frequency: { 。 ..state.frequency, days: [...state.frequency.days, parseInt(val)], }, }), () => { console.log(this.state.frequency.days); } );
  • 那你用key干什么?
  • 根据新要求,我不需要 key juz
猜你喜欢
  • 1970-01-01
  • 2016-05-12
  • 2019-02-23
  • 2023-01-14
  • 2021-03-07
  • 2021-01-24
  • 1970-01-01
  • 2021-01-24
  • 2020-11-03
相关资源
最近更新 更多