无法从 redux 存储中删除对象

Posted

技术标签:

【中文标题】无法从 redux 存储中删除对象【英文标题】:Can't delete object from redux store 【发布时间】:2021-11-23 19:05:31 【问题描述】:
import  createSlice  from "@reduxjs/toolkit";

const transactionSlice = createSlice(
    name: 'transactions',
    initialState: [
        id: 1, text: 'shady', amount: 55,
        id: 2, text: 'shady', amount: 55,
        id: 3, text: 'shady', amount: 55
    ],
    reducers: 
        addTransaction: (state, action) => 
            const newTransaction = 
                id: Math.floor(Math.random() * 100000),
                text: action.payload.text,
                amount: +action.payload.amount
            
            state.push(newTransaction);
        ,
        deleteTransaction: (state, action) => (
            ...state,
            transactions: state.transactions.filter(transaction => transaction.id !== action.payload.id)
        )
    
)

export const  addTransaction, deleteTransaction  = transactionSlice.actions;
export default transactionSlice.reducer;

我想从商店中删除一笔交易及其退货 TypeError:无法访问属性“过滤器”,state.transactions 未定义

【问题讨论】:

【参考方案1】:

您得到这个是因为您所在的州没有任何名为交易的密钥。

您可以通过将createSlice 方法中的initialState值更新为

initialState: 
    transactions:[
        id: 1, text: 'shady', amount: 55,
        id: 2, text: 'shady', amount: 55,
        id: 3, text: 'shady', amount: 55
    ]

【讨论】:

【参考方案2】:

切片的状态是一个数组 - 例如,您推送到状态以添加交易。过滤状态以删除一个:

    deleteTransaction: (state, action) =>
        state.filter(transaction => transaction.id !== action.payload.id)

【讨论】:

以上是关于无法从 redux 存储中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

从 redux 存储的列表中删除项目并重定向回列表 - 延迟道具评估?

我应该在 Redux 中存储 Promise 吗?

在 Redux 中存储 websocket(通道)连接对象

从 Azure 存储 Blob 中批量删除“x”天前的对象

React Redux - 删除对象的数据获取模式

如何添加/删除使用 normalizr 生成的 redux 存储?