有没有简单一点的写法
时间: 2024-02-08 13:07:04 浏览: 137
当然,可以使用ES6中的展开运算符(...)来合并旧对象和新对象,这样代码会更简单。以下是示例代码:
```javascript
import { createSlice } from '@reduxjs/toolkit';
const transactionsSlice = createSlice({
name: 'transactions',
initialState: {
transactions: [],
},
reducers: {
mergeTransactions: (state, action) => {
const { oldTransaction, newTransaction } = action.payload;
const index = state.transactions.findIndex(t => t.id === oldTransaction.id);
if (index !== -1) {
state.transactions[index] = { ...oldTransaction, ...newTransaction };
}
},
},
});
export const { mergeTransactions } = transactionsSlice.actions;
export default transactionsSlice.reducer;
```
在上面的代码中,我们仍然使用`findIndex`方法找到旧事务的索引,但是我们使用展开运算符将旧事务和新事务合并为一个新对象,并将其设置为数组中的新对象。
这个reducer与上面的例子一样,可以在组件中调用`dispatch(mergeTransactions({ oldTransaction, newTransaction }))`来触发它并合并旧对象和新对象。
阅读全文