在Redux-Toolkit中无法从添加的包中删除产品

ggazkfy8  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(80)

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

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

字符串
而它是这样运作的

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


对此有何解释?

vxf3dgd4

vxf3dgd41#

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

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

个字符
如果你想使用索引和过滤器:

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>
)}

的字符串

f87krz0w

f87krz0w2#

你好,我只是做一个猜测,因为没有足够的代码来精确地指出问题。splice函数修改了state.books数组,所以这可能是它工作的原因。
对于数组过滤函数,您需要将结果分配给state.books

相关问题