我在ReactNative中使用Redux,我想用reducer创建一个商店
而且,我在下面得到错误,指向函数中的"开关(动作.类型("行 切换收藏夹(( 在收藏夹Reducer.js.我发现了一个类似的主题,但它没有解决它......
undefined 不是对象(评估 'action.type'(
收藏夹减速机.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()
配置存储.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)
有人有想法吗?
导出时不需要调用该函数,这在您的情况下会导致错误,请将其更改为
export default toggleFavorite;
它会工作