簡體   English   中英

從Redux中的數組刪除項目

[英]Delete an item from an array in Redux

我正在學習redux,我想知道如何從狀態中刪除一項。 我有這個初始狀態:

export const getInitialState = () => {
  let state = {
    isLogged: false,
    organizations: [],
    userData: {},
    activeIndex: -1,
    currentRetrospective: {},
    hasFetched: false
  }

這就是數據在organizations內部的生活方式

  case `${actions.ACTION_GET_USER_ORGS}_FULFILLED`: {
    let activeIndex = 0
    if (state.activeIndex !== -1) {
      activeIndex = state.activeIndex
    } else if (action.payload.data.length === 0) {
      activeIndex = -1
    }
    return { ...state, activeIndex, organizations: action.payload.data, hasFetched: true }
  }

現在,我需要做的是從organizationretrospectives陣列中刪除一項。 我試過了,但是沒有用。 有更好的方法嗎?

export default (state = getInitialState(), action) => {
  switch (action.type) {

  case `${actions.ACTION_DELETE_RETROSPECTIVE}_FULFILLED`: {

    const { organizations, activeIndex } = state

    const newOrganizations = JSON.parse(JSON.stringify(organizations))

    const activeOrganization = newOrganizations[activeIndex]

    activeOrganization.retrospectives = activeOrganization.retrospectives
      .filter((retro) => retro.id != action.retroId )

    return { ...state, organizations: newOrganizations }
  }

謝謝!

您可以像這樣過濾組織數組:

 export default (state = getInitialState(), action) => {
      switch (action.type) {
          case `${actions.ACTION_DELETE_RETROSPECTIVE}_FULFILLED`: {
              return { 
                  ...state, 
                  organizations: state.organization.filter(retro => 
                      retro.id !== action.retroId }
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM