Я использую 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)
У кого-нибудь есть идеи ??