Rozpoczynam pracę nad projektem Redux z Redux i jest to kompletny chaos, założyłem interfejs Store as w następujący sposób:
interface Store {
ads: {
loading: boolean;
data: Ad[];
errors: Error;
isPro: boolean;
};
}
interface Ad {
id: any;
title: any;
body: any;
price: any;
latitude: any;
longitude: any;
}
Mam tę stałą do określenia jako akcja do wysłania po:
export const TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST = "action/addJobAnnouncementRequest";
A potem mam swój reduktor:
import {
TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST,
} from "../constants/actions";
export const reducer = (Store: Store, action: any) => {
switch (action.type) {
case TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST:
console.log("Test");
return {
...Store,
annuncio: [...Store.ads.data, action.payload]
};
default:
console.log("dont return nothing");
break;
}
return Store;
};
Już działa ReduxDevTools, testuję je z innym dziennikiem konsoli i działa dobrze, teraz dlaczego, kiedy reduxdevotools próbują wywołać akcję z ładunkiem, (przykład:
{
type: 'action/addJobAnnouncementRequest',
payload: { title: "test" }
}
Daje mi różne błędy, jeśli spróbuję innego testu, ale w tym samym trybie, np
sklep jest niezdefiniowany,
Lub
nie można odczytać „reklam” usługi
Myślę, że jest problem z moją składnią javascript lub nie wiem, czy ktoś może mi pomóc?
1 odpowiedź
Powinieneś także zainicjować swój obiekt stanu, ponieważ wygląda na to, że jest to źródło błędu dotyczącego ads
. Jeśli chcesz, możesz użyć store
lub Store
zamiast state
.
const initialState: Store = {
ads: {
loading: false,
data: [],
errors: '',
isPro: false,
};
}
export const reducer = (state = initialState, action: any) => {
switch (action.type) {
case TYPE_ADD_JOB_ANNOUNCEMENT_REQUEST:
return {
...state,
ads: [...state.ads.data, action.payload] // I'm assuming you meant `ads` here?
};
default:
return state;
}
};
ads
jest tam, ale nie możemy sprawdzić, czy to prawda. Wygląda również na to, że próbujesz użyć interfejsu jako obiektu stanu, ale nie możesz tego powiedzieć