我正在使用Redux-Toolkit,并试图从我的购物车(包)中删除产品,但当我尝试使用时,它不起作用
removeBook(state, action) { state.books = state.books.filter(book => book.title !== action.payload) }
字符串而它是这样运作的
removeBook(state, action) { state.books.splice(action.payload, 1) }
型对此有何解释?
vxf3dgd41#
如果使用Array.prototype.splice方法可以工作,那么看起来您正在调度removeBook并传递索引作为有效负载值。
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> )}
的字符串
f87krz0w2#
你好,我只是做一个猜测,因为没有足够的代码来精确地指出问题。splice函数修改了state.books数组,所以这可能是它工作的原因。对于数组过滤函数,您需要将结果分配给state.books。
state.books
2条答案
按热度按时间vxf3dgd41#
如果使用Array.prototype.splice方法可以工作,那么看起来您正在调度
removeBook
并传递索引作为有效负载值。个字符
如果你想使用索引和过滤器:
的字符串
如果你想使用书名从状态中删除一本书,那么传递书名的值。
的字符串
f87krz0w2#
你好,我只是做一个猜测,因为没有足够的代码来精确地指出问题。splice函数修改了state.books数组,所以这可能是它工作的原因。
对于数组过滤函数,您需要将结果分配给
state.books
。