React Native Redux: «Undefined не является объектом (оценка 'action.type')" - PullRequest
0 голосов
/ 09 февраля 2019

Я использую Redux с ReactNative, я хотел бы создать магазин с редуктором

И, ниже я получил ошибку, укажите на строку switch (action.type) в функции toggleFavorite ()в любимом Reducer.js.Я нашел похожую тему, но это не помогло ...

undefined не является объектом (оценивает 'action.type')

FavoritesReducer.js:

const initialState = { favoriteQuotes: [] }

function toggleFavorite(state = initialState, action) {
  let nextState
  switch (action.type) {
    case 'TOGGLE_FAVORITE':
      const favoriteQuoteIndex = state.favoriteQuotes.findIndex(item => item.id === action.value.id)
      if (favoriteQuoteIndex !== -1) {
        // La citation est déjà dans les favoris, on la supprime de la liste
        nextState = {
          ...state,
          favoriteQuotes: state.favoriteQuotes.filter( (item, index) => index !== favoriteQuoteIndex)
        }
      }
      else {
        // La citation n'est pas dans les favoris, on l'ajoute à la liste
        nextState = {
          ...state,
          favoriteQuotes: [...state.favoriteQuotes, action.value]
        }
      }
      return nextState || state
  default:
    return state
  }
}

export default toggleFavorite()

configureStore.js:

import { createStore } from 'redux';
import toggleFavorite from './Reducers/favoriteReducer'

export default createStore(toggleFavorite)

Здесь я использую «рассылку»:

import React from 'react'
...
import { connect } from 'react-redux'

class QuoteDetail extends React.Component {

...

  _toggleFavorite() {
    const action = { type: "TOGGLE_FAVORITE", value: this.state.quote }
    this.props.dispatch(action)
  }

...

<Button title="Favoris" onPress={() => this._toggleFavorite()}/>

...

const mapStateToProps = (state) => {
  return {
    favoriteQuotes: state.favoriteQuotes
  }
}
export default connect(mapStateToProps)(QuoteDetail)

У кого-нибудь есть идеи ??

1 Ответ

0 голосов
/ 09 февраля 2019

Вам не нужно вызывать функцию во время экспорта, которая вызывает ошибку в вашем случае, измените ее на

export default toggleFavorite;

, и она будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...