#reactjs #react-redux
Вопрос:
Я пытаюсь получить доступ к myCitiesArray, который находится в функции HandleCitiesArray. Мне нужно получить доступ к redux с помощью крючка useSelector. Как я могу это сделать? Я хочу удалить объект внутри массива initialState.myCities
import ActionTypes from "../constants/ActionTypes";
import { useSelector } from "react-redux";
const initialState = {
myCities: [],
aCity: {},
getCityById: {},
filteredCities: [],
};
const HandleCitiesArray = () => {
const myCitiesArray = useSelector((state) => state.allWeathers.myCities);
return myCitiesArray;
};
export const WeatherReducer = (state = initialState, { type, payload }) => {
console.log(HandleCitiesArray().myCitiesArray); //try to print it here
switch (type) {
case ActionTypes.GETBY_CITYNAME:
return {
...state,
aCity: payload,
myCities: [...state.myCities, payload],
};
case ActionTypes.GETCITYBYID:
return {
...state,
getCityById: payload,
myCities: HandleCitiesArray().filter(
(item) => parseInt(item.id) !== parseInt(payload.id)
),
};
default:
return state;
}
};
Ответ №1:
Только Хуки вызовов из функций React
У вас уже есть доступ к состоянию в функции редуктора, где вы можете сделать то myCities
же самое, что и в этой строке myCities: [...state.myCities, payload],
, и выйти из системы
Комментарии:
1. но я пытаюсь удалить элемент из массива myCities. Как я мог это сделать
2. штат.микиты. фильтр( (элемент) => Синтаксический анализ(item.id) !== Синтаксический анализ(payload.id)
3. Я исправляю так: [ …initialState.myCities, …state.myCities. фильтр((элемент) => item.id !== payload.id), ],