元素从redux商店中删除但仍在页面上呈现

时间:2018-02-28 04:22:03

标签: reactjs redux

我想从redux store(state)的列表中删除一个项目,它显示该元素已被删除,但渲染的页面仍然显示该元素。

这是减速器代码:

dosigma(0, 100000)

在组件中,我将状态放入这样的列表变量中: - &gt; export default function todoApp(state=[],action){ switch(action.type){ case 'ADD_TODO': return [...state,action.item]; case 'TOGGLE_TODOS': const index = action.index; let newState = state.map((item) => ( item.index===index? {...item, done: !item.done}: item )); return newState; case 'REMOVE_TODOS': let removeFromState = state; for(var i=0;i<removeFromState.length;i++){ if(removeFromState[i].index===action.index){ removeFromState.splice(i,1); } } return removeFromState; default: return state; } }

并在组件中,将要显示的元素放在itemsArray变量中。此处的列表不应显示该项目,但它会显示该项目。那么,我在这里做错了什么?

const list = this.props.state;

1 个答案:

答案 0 :(得分:1)

我在这里回答我自己的问题,因为我从评论中发现我正在改变状态。  当我在做let removeFromState = state;时 removeFromState只是对原始状态的引用 因此在使用拼接时我正在改变它。 修复是使用

let removeFromState = [...state]; 

将原始状态复制到此变量上,然后我对此变量进行了更改并返回了新状态,现在它正常工作。