Rozwiązanie na dole postu
Gdy chcę pobrać wartość ze stora za pomocą useSelector dostaję undefined
const notes = useSelector((state:NotesState) => {
return state.notes
});
próbowałem również
const notes = useSelector<NotesState,NotesState["notes"]>((state) => {
return state.notes
});
gdy zwrócę tylko
return state
Dostaję dane
NotesReducer:
notes: []
Jednak typescript nie pozwala mi ich odczytać.
interfejsy
export interface Note {
id: string ,
title: string,
description: string,
dateCreation: number,
deadline?:number
}
export interface NotesState {
notes: Note[]
}
Reducer
const initState:NotesState = {
notes:[]
}
export const NotesReducer = (state = initState, action:NoteActionTypes) => {
switch (action.type) {
case NoteActions.ADD_NOTE:
return {
...state,
notes: [...state.notes, action.payload]
};
case NoteActions.UPDATE_NOTE:
return state.notes.map(note =>
note.id === action.payload.id ? action.payload : note
);
case NoteActions.REMOVE_NOTE:
return state.notes.filter(note => note.id != action.payload.id)
default:
return state
}
}
Zapis do stora działa bez problemu.
Co robie źle? Szukałem na stacku, ale tamte rozwiązani to były głównie błędy, które u mnie nie ma.
EDIT:
Udało mi się znaleźć rozwiązanie(wystarczyło zobaczyć w doc i zrozumieć)
const {notes} = useSelector<RootState,NotesState>(state => state.NotesReducer );
gdzie RootState
export type RootState = ReturnType<typeof rootReducer>
Może komuś się przyda