РЕАКЦИЯ: Как я могу получить доступ к другой функции для возврата?

#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), ],