我正在使用Redux-Toolkit,并试图从购物车(包)中删除产品,但当我try 使用时,它不起作用

removeBook(state, action) {
  state.books = state.books.filter(book => book.title !== action.payload)
}

鉴于它的工作方式是这样的

removeBook(state, action) {
  state.books.splice(action.payload, 1)
}

对此有何解释?

推荐答案

如果使用Array.prototype.splice方法有效,那么看起来您正在调度removeBook并传递一个索引作为有效负载值.

removeBook(state, action) {
  state.books.splice(action.payload, 1);
}
{books.map((book, index) => (
  <div key={book.title}>
    <h2>{book.title}</h2>
    <button
      type="button"
      onClick={() => dispatch(removeBook(index))} // <-- passing index
    >
      X
    </button>
  </div>
)}

如果要使用索引和筛选器:

removeBook(state, action) {
  state.books = state.books.filter((book, index) => index !== action.payload);
}
{books.map((book, index) => (
  <div key={book.title}>
    <h2>{book.title}</h2>
    <button
      type="button"
      onClick={() => dispatch(removeBook(index))} // <-- passing index
    >
      X
    </button>
  </div>
)}

如果您想使用书名从状态中删除一本书,则传递该书的书名值.

removeBook(state, action) {
  state.books = state.books.filter(book => book.title !== action.payload);
}
{books.map((book) => (
  <div key={book.title}>
    <h2>{book.title}</h2>
    <button
      type="button"
      onClick={() => dispatch(removeBook(book.title))} // <-- passing title
    >
      X
    </button>
  </div>
)}

Javascript相关问答推荐

fetch在本地设置相同来源的cookie,但部署时相同的代码不会设置cookie

是什么原因导致此Angular 16应用程序中类型错误时属性结果不存在?

字节数组通过echo框架传输到JS blob

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

如何将Cookie从服务器发送到用户浏览器

我的角模板订阅后不刷新'

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

使用原型判断对象是否为类的实例

如何修复我的数据表,以使stateSave正常工作?

如何将数据块添加到d3力有向图中?

Use Location位置成员在HashRouter内为空

当我在Reaction中创建一个输入列表时,我的输入行为异常

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

如何在下一个js中更改每个标记APEXCHARTS图表的 colored颜色

从异步操作返回对象

有没有办法在R中创建一张具有多个色标的热图?

如何在Reaction中设置缺省值, Select 下拉列表,动态追加剩余值?

如何在Firebase中读取对象的特定字段?

在采购unpept-visalizations.js时遇到问题

JS:inline date子串.