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