typescript - Problem med förväntade 0 argument, men fick 1 i Redux Toolkit
Jag har ett fel Förväntade 0 argument, men fick 1. i en enkel Redux Slice-fil.
Detta fel uppstår när jag försöker skicka.
App.tsx
useEffect(() => {
dispatch(getMovies({ query: "searchQuery", page: 1 }));
}, []);
Slice.tsx
const movieSlice = createSlice({
name: "movie",
initialState,
reducers: {
getMovies(name) {
return name;
},
setMovies: (state, action: PayloadAction<Movie[]>) => {
state.moviesList = action.payload;
},
},
});
export const {
getMovies,
setMovies,
} = movieSlice.actions;
Var är problemet? Var ska man ange att getMovies kan ta ett objekt som argument?
Tack
Svar #1
Alla reducerfunktioner måste ta det aktuella tillståndet som sin första parameter, och eventuellt åtgärden som utlöste reducen. Dessutom måste dina reducerfunktioner returnera det nya tillståndet, inte bara godtyckliga data.
Så din getNames-reducer kommer att få state där du försöker hämta namn, du saknar action (andra parametern), och du returnerar inte det nya state.
För att skicka objektet som du har där, bör din reducer se ut ungefär så här:
getMovies(state, {payload: {query, page}) {
return {...state, moviesQuery: { query, page }};
}
