Я сделал вызов API, который возвращает массив объектов Book, который я пытаюсь поместить в свое состояние, заменив текущий массив результатов. Я попытался создать новый объект состояния, используя Objects.assign для создания нового массива результатов, и некоторые другие вещи, но кажется, что я не обновляю массив состояний или результатов должным образом, так как мои селекторы не обновляются. Я знаю, что мой редуктор определенно попал, хотя, поскольку у меня там был некоторый вход в систему ранее.
Вот объект состояния:
export interface BooksState {
books: Book[];
results: Book[];
}
вот мой текущий редуктор:
const booksReducer = createReducer(
initialState,
on(BooksActions.SearchBookSuccess, (state, { payload }) => {
const newState = {
...state,
results: payload
};
return newState;
})
);
export function reducer(state: BooksState | undefined, action: Action) {
return booksReducer(state, action);
}
здесь я отправляю действие:
searchBooks$ = createEffect(() =>
this.actions$.pipe(
ofType(BookActions.SearchBookRequested),
Rx.mergeMap(action =>
this.bookService.search(action.payload).pipe(
Rx.map(results =>
BookActions.SearchBookSuccess({ payload: results })
),
Rx.catchError(() => BookActions.SearchBookFailure)
)
)
)
);
, и это мой селектор:
this.results$ = store.select(getResults);
С помощью селектора я также попытался создать функцию export const getResults = (state: BooksState) => state.results
и выбрав его с помощью store.select
также безуспешно.
Что мне не хватает?