如何编写对应已有removeItem action的删除数组项Redux reducer?
对应删除数组项的reducer实现
你可以直接在原有addItems reducer的switch分支中新增REMOVE_ITEM的处理逻辑即可,核心要遵循Redux不可变数据的要求,不直接修改原state数组,返回新的过滤后的数组:
export const addItems = (state = [], action) => { switch (action.type) { case 'ADD_ITEM': return [ ...state, action.product ] // 新增删除分支逻辑 case 'REMOVE_ITEM': // 过滤掉索引等于传入payload的数组项,返回新数组 return state.filter((item, index) => index !== action.payload) default: return state; }; };
另外你现有代码的删除按钮还没有绑定触发删除的点击事件,需要补充绑定逻辑才能生效:
{showItems.map((item, index)=>{ return( <ul key={index} className='d-flex justify-content-around'> <button type='button' className='btn-close btn-danger' // 补充点击触发删除的逻辑 onClick={() => dispatch(removeItem(index))} /> <p>{item.author}</p> <p>{item.price}</p> </ul> ); })}
内容的提问来源于stack exchange,提问作者iman hosseingholizadeh
相关产品推荐
相关产品推荐

