Не удается получить доступ к данным из redux toolkit с помощью typescript

#reactjs #typescript #redux #redux-toolkit

#reactjs #typescript #redux #redux-toolkit

Вопрос:

В настоящее время я изучаю typescript, создавая очень простое приложение todo с использованием React, Redux-toolkit и Typescript. Когда я пытаюсь получить доступ к данным из хранилища с помощью useSelector, я получаю объект, содержащий нужное мне значение (в данном случае массив Todo).

 //TodoList.tsx
const todos = useSelector(selectTodos)
  

Консоль.журнал задач :

 Object { todos: (1) […] }
  
 //TodoSlice.tsx
export const selectTodos = (state: RootState): Todo[] => state.todos
  

Проблема в том, что я не могу получить доступ к массиву, потому что, согласно компилятору TS, это значение не существует (но, согласно консоли, оно есть !)

Если вам нужна дополнительная информация, ознакомьтесь с полным кодом здесь

Приветствия и заранее спасибо! (также прошу прощения за возможные опечатки)

Ответ №1:

На самом деле, то, что вы определяете как RootState это не корневое состояние, а просто тип состояния вашего фрагмента.

Вы можете получить свои фактические RootState данные через

 export const store = configureStore({
    reducer: {
        todos: todosReducer
    }
})

export type RootState = ReturnType<typeof store.getState>;
  

Тогда вы действительно заметите, что ваши задачи находятся в state.todos.todos , а не в state.todos .