No pude encontrar ninguna respuesta relacionada, la única estaba relacionada directamente con Redux, por lo que hice una pregunta que puede parecer obvia para algunos de ustedes. En cuanto a mi código, parece que todo es correcto, pero tengo problemas con el siguiente error: se esperaban 0 argumentos, pero obtuve 1
Código:
// An enum with all the types of actions to use in our reducer enum ActionType { INCREASE = 'INCREASE', } // An interface for our actions interface Action { types: ActionType; payload: number; } // An interface for our state interface allState { playersNumber: number, playerData: string } const reducer : any = (state : allState, action : Action) => { switch (action.types) { case ActionType.INCREASE: return { playersNumber: state.playersNumber + 5} } } const initialState = { playersNumber : 0, playerData: "" } const App : FC<any> = () => { const [responseData , setResponseData] = useState<Array<object>>([]); const [state, dispatch] = useReducer(reducer, initialState); // Fetching data with Axios const fetchingData = async () => { const response = await axios.get<Array<object>>('http://localhost:3006/lfy'); setResponseData(response.data); console.log(response.data.length); dispatch({type: ActionType.INCREASE}) } useEffect(() => { fetchingData(); }, []); return ( <Routes> {console.log(state)} <Route path="/" element={<Home />} /> </Routes> ); } export default App;¡Estás ahí! Solo hay algunas cosas que arreglar. Primero, debe eliminar el tipo cualquiera del reductor y devolver siempre el estado completo dentro de la función:
const reducer = (state : allState, action : Action) => { switch (action.types) { case ActionType.INCREASE: return {...state, playersNumber: state.playersNumber + 5}; // use the shallow copy for the state so you make sure to not replace it completely default: return state; } }En última instancia, cuando llama al despacho, escribió tipo en lugar de tipos y tampoco pasó la carga útil. Si la carga útil es opcional, debe configurarla como opcional en la interfaz:
interface Action { types: ActionType; payload?: number; // note the question mark } dispatch({types: ActionType.INCREASE});