You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Redux修改state时liked字段生效但likedBook未更新,如何修复

问题原因

LIKED分支的逻辑存在数据引用错误:你通过map生成了更新liked属性的新books数组,但计算likedBook时使用的是修改前的旧state.books,旧数组中对应书籍的liked属性仍为false,因此无法筛选到刚点赞的书籍。

修复方法

先保存更新后的books数组,再基于这个新数组筛选点赞列表即可,修改后的代码如下:

case LIKED :
    // 先生成更新完点赞状态的新books数组
    const updatedBooks = state.books.map((book) => 
        book.title === action.item.title ? {...book, liked: true} : book
    );
    return {
        ...state,
        books : updatedBooks,
        // 基于最新的books数组生成点赞列表
        likedBook : updatedBooks.filter(book => book.liked)
    }

可选优化:如果业务中存在同名书籍的可能性,建议给Book接口新增唯一id字段,匹配时用id替代title判断,避免误修改其他同名书籍的状态。

内容的提问来源于stack exchange,提问作者sojinLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:36:04