我不明白这段代码有什么问题,我传入ID并过滤掉状态,但它只是不会删除,不能弄清楚,会喜欢一些帮助。片:
import { createSlice } from "@reduxjs/toolkit";
const movieSlice = createSlice({
name: "movie",
initialState: { favoriteMovies: [] },
reducers: {
addMovie: (state, action) => {
state.favoriteMovies = [...state.favoriteMovies, action.payload];
},
removeMovie: (state, action) => {
state.favoriteMovies = state.favoriteMovies.filter(
(movie) => movie.imdbID !== action.payload
);
},
},
});
export const { addMovie, removeMovie } = movieSlice.actions;
export const selectMovie = (state) => state.movie.favoriteMovies;
export default movieSlice.reducer;
调度:
const MovieDetail = ({ movie }) => {
const [isFavorite, setIsFavorite] = useState(false);
const dispatch = useDispatch();
const imdbID = movie.imdbID;
const handleAddFavorite = () => {
dispatch(addMovie({ movie }));
setIsFavorite(true);
};
const handleRemoveFavorite = () => {
dispatch(removeMovie({ imdbID }));
console.log(imdbID);
setIsFavorite(false);
};
当删除时,它不起作用,然后再添加。输入的id是正确的
使用
调度的方式dispatch(removeMovie({ imdbID }));
imdbID
最终会变成action.payload.imdbID
。
所以你要么访问它,要么像
那样分派dispatch(removeMovie(imdbID));