每次我按下收藏夾按鈕時,它都會給我一個錯誤。
TypeError: undefined is not an object (evaluating 'state.favoriteBooks.findIndex')
這個錯誤發生在book.js redux reducer 中:
import { SET_BOOKS, TOGGLE_FAVORITE } from '../actions/types';
import Book from '../../models/book';
const initialState = {
books: [],
favoriteBooks: [],
};
export default (state = initialState, action) => {
switch (action.type) {
case SET_BOOKS:
return {
books: action.books,
};
case TOGGLE_FAVORITE:
const existingIndex = state.favoriteBooks.findIndex(
(book) => book.id === action.bookId
);
if (existingIndex >= 0) {
const updatedFavBooks = [...state.favoriteBooks];
updatedFavBooks.splice(existingIndex, 1);
return { ...state, favoriteBooks: updatedFavBooks };
} else {
const book = state.books.find((book) => book.id === action.bookId);
return { ...state, favoriteBooks: state.favoriteBooks.concat(book) };
}
default:
return state;
}
};
我認為問題在于它試圖在變數為空時找到索引。但是當我運行調度toggleFavorite(BookId)時,它會輸入圖書 ID。
uj5u.com熱心網友回復:
回傳SET_BOOKS時我忘記添加..state.
...
case SET_BOOKS:
return {
...state,
books: action.books,
};
...
不要忘記添加...state,因為您想將以前的狀態保存在initialState. 這就是為什么它沒有在books.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/469254.html
上一篇:減少reactnativeios/android大小檔案夾
下一篇:自定義警報僅有效一次
