预期 0 个参数的问题,但在 Redux Toolkit 中得到 1 个
Problem with expected 0 arguments, but got 1 in Redux Toolkit
我在简单的 Redux Slice 文件中有一个错误 Expected 0 arguments, but got 1.
。
我尝试发送时出现此错误。
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;
问题出在哪里?在哪里声明 getMovies 可以接受对象作为参数?
谢谢
所有reducer 函数都必须将当前状态作为它们的第一个参数,以及可选的触发reducer 的操作。此外,您的 reducer 函数需要返回新状态,而不仅仅是任意数据。
因此,您的 getNames
reducer 将进入您尝试获取名称的状态,您错过了操作(第二个参数),并且您没有返回新状态。
要按原样传递对象,reducer 应该类似于:
getMovies(state, {payload: {query, page}) {
return {...state, moviesQuery: { query, page }};
}
我在简单的 Redux Slice 文件中有一个错误 Expected 0 arguments, but got 1.
。
我尝试发送时出现此错误。
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;
问题出在哪里?在哪里声明 getMovies 可以接受对象作为参数?
谢谢
所有reducer 函数都必须将当前状态作为它们的第一个参数,以及可选的触发reducer 的操作。此外,您的 reducer 函数需要返回新状态,而不仅仅是任意数据。
因此,您的 getNames
reducer 将进入您尝试获取名称的状态,您错过了操作(第二个参数),并且您没有返回新状态。
要按原样传递对象,reducer 应该类似于:
getMovies(state, {payload: {query, page}) {
return {...state, moviesQuery: { query, page }};
}