TypeError: .push не определен

Я создал хранилище данных с избыточностью, в котором я хочу в основном хранить индекс домашних животных, которые понравились пользователю или не понравились пользователю. Я столкнулся с проблемой, когда я получаю сообщение об ошибке, когда TypeError: .push не определен. Я следую базовому учебнику по сокращению, упомянутому здесь, https://thewikihow.com/video_KcC8KZ_Ga2M Меня смущает тот факт, что массив I сначала определяется, а затем не определяется, когда я помещаю целое число в массив.

ProfileApp.js

class ProfileApp extends React.Component {
  constructor(props) {
    super(props)
   .........(Truncated for brevity)
   .........(Truncated for brevity)
   }
   componentWillMount() {

   .........(Truncated for brevity)
   this.props.likePets(this.state.currentIndex);
   .........(Truncated for brevity)
   this.props.dislikePets(this.state.currentIndex);



   }
   function mapStateToProps(state){
     return {
       likedPets: state.likedPets,
       dislikedPets: state.dislikedPets
     }
   }
   function mapDispatchToProps(dispatch){
     return{
       likePets: (i)=> dispatch({type:'LIKE_PETS'}),
       dislikePets: (i)=> dispatch({type:'DISLIKE_PETS'})
     }

   }
   export default connect(mapStateToProps)(ProfileApp)

App.js

import  ProfileApp  from './src/ProfileApp';
import {Provider} from 'react-redux';/
const initialState = {
  likedPets: [],
  dislikedPets: []

}
const reducer = (state = initialState, action) =>{

console.info(state.likedPets)
console.info(state.dislikedPets)

  switch (action.type){

    case 'LIKE_PETS':
    return{likedPets: likedPets.push(action.index)}
    case 'DISLIKE_PETS':
    return{dislikedPets:dislikedPets.push(action.index)}
  }
  return state

}

const store = createStore(reducer);
export default class App extends React.Component {



  render() {
    return (
    <Provider store = {store}>
      <ProfileApp></ProfileApp>
    </Provider>

    )
  }
}

вывод, когда я впервые компилирую этот код на консоли, выглядит следующим образом: при начальной загрузке:

Array []
Array []
Running application "main" with appParams:.....(Trimed)

Действия пользователя: как домашнее животное

Array []
Array []

Действия пользователя: как другой питомец

1
undefined
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
301
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно передать свою картуDispatchToProps в соединение:

export default connect(mapStateToProps)(ProfileApp)

к

export default connect(mapStateToProps, mapDispatchToProps)(ProfileApp)

Вам нужно распространить свое состояние в редукторе:

return{likedPets: likedPets.push(action.index)}

к

return{...state, likedPets: likedPets.push(action.index)}

в противном случае вы перезаписываете состояние в магазине объектом, на котором нет ваших нелюбимых питомцев.

Также метод массивов push возвращает длину массива. Замените это на

likedPets: [...state.likedPets,action.index]

Чтобы получить массив, который является текущим состоянием (likedPets) с добавленным к нему action.index.

Другие вопросы по теме