簡體   English   中英

React Native中的Redux-Saga錯誤

[英]Redux-Saga error in React Native

我已經使用React Native創建了一個應用程序,並希望使用redux-saga從API獲取數據。
在配置Redux和Sagas之前,一切正常。
這是我添加和修改的:

ReactRestoRedux.js

 import { createReducer, createActions } from 'reduxsauce' import Immutable from 'seamless-immutable' // Categories types const { Types, Creators } = createActions({ categories: null, categoriesSucceed: ['payload'], categoriesFailed: null }) export const ReactRestoTypes = Types export default Creators // Initial state export const INITIAL_STATE = Immutable({ payload: null, errorMessage: null, fetchCategories: false }) // Reducers export const categoriesRequest = (state) => state.merge({ fetchCategories: true }) export const categoriesRequestSucceed = (state, action) => { const { payload } = action return state.merge({ fetchCategories: false, errorMessage: null, payload}) } export const categoriesRequestFailed = (state) => state.merge({ fetchCategories: false, errorMessage: true}) export const reducer = createReducer(INITIAL_STATE, { [Types.CATEGORIES_REQUEST]: categoriesRequest, [Types.CATEGORIES_SUCCEED]: categoriesRequestSucceed, [Types.CATEGORIES_FAILED]: categoriesRequestFailed }) 



index.js(redux)

 import { takeLatest, all } from 'redux-saga/effects' //import API from '../Services/Api' import FixtureAPI from '../Services/FixtureApi' import DebugConfig from '../Config/DebugConfig' import ZomatoAPI from '../Services/ZomatoAPI' /* ------------- Types ------------- */ import { StartupTypes } from '../Redux/StartupRedux' import { GithubTypes } from '../Redux/GithubRedux' import { ReactRestoTypes } from '../Redux/ReactRestoRedux' /* ------------- Sagas ------------- */ import { startup } from './StartupSagas' import { getUserAvatar } from './GithubSagas' import { getCategories } from './ReactRestoSagas' /* ------------- API ------------- */ // The API we use is only used from Sagas, so we create it here and pass along // to the sagas which need it. const api = DebugConfig.useFixtures ? FixtureAPI : ZomatoAPI.create() /* ------------- Connect Types To Sagas ------------- */ export default function * root () { yield all([ // some sagas only receive an action takeLatest(StartupTypes.STARTUP, startup), // some sagas receive extra parameters in addition to an action takeLatest(GithubTypes.USER_REQUEST, getUserAvatar, api), takeLatest(ReactRestoTypes.CATEGORIES_REQUEST, getCategories) ]) } 



ReactRestoSagas.js

 import { call, put } from 'redux-saga/effects' import { path } from 'ramda' import ReacRestoActions from '../Redux/ReactRestoRedux' import ReactRestoAPI from '../Services/ZomatoAPI' const api = ReactRestoAPI.create() export function* getCategories(){ const response = yield call(api.getCategories) if(response.ok){ //ok, call action from redux yield put(ReacRestoActions.categoriesSucceed(payload)) }else{ yield put(ReacRestoActions.categoriesFailed()) } } 



index.js(傳奇)

 import { takeLatest, all } from 'redux-saga/effects' //import API from '../Services/Api' import FixtureAPI from '../Services/FixtureApi' import DebugConfig from '../Config/DebugConfig' import ZomatoAPI from '../Services/ZomatoAPI' /* ------------- Types ------------- */ import { StartupTypes } from '../Redux/StartupRedux' import { GithubTypes } from '../Redux/GithubRedux' import { ReactRestoTypes } from '../Redux/ReactRestoRedux' /* ------------- Sagas ------------- */ import { startup } from './StartupSagas' import { getUserAvatar } from './GithubSagas' import { getCategories } from './ReactRestoSagas' /* ------------- API ------------- */ // The API we use is only used from Sagas, so we create it here and pass along // to the sagas which need it. const api = DebugConfig.useFixtures ? FixtureAPI : ZomatoAPI.create() /* ------------- Connect Types To Sagas ------------- */ export default function * root () { yield all([ // some sagas only receive an action takeLatest(StartupTypes.STARTUP, startup), // some sagas receive extra parameters in addition to an action takeLatest(GithubTypes.USER_REQUEST, getUserAvatar, api), takeLatest(ReactRestoTypes.CATEGORIES_REQUEST, getCategories) ]) } 



然后我得到這個錯誤: 在此處輸入圖片說明


我希望我能為此得到任何幫助,在這里呆了幾個小時

問題出在您的ReactRestoRedux.js

const { Types, Creators } = createActions({
    categories: null,
    categoriesSucceed: ['payload'],
    categoriesFailed: null
})

與不符

export const reducer = createReducer(INITIAL_STATE, {
    [Types.CATEGORIES_REQUEST]: categoriesRequest,
    [Types.CATEGORIES_SUCCEED]: categoriesRequestSucceed,
    [Types.CATEGORIES_FAILED]: categoriesRequestFailed
})

你必須修改categories關鍵categoriesRequest ,如下圖所示

const { Types, Creators } = createActions({
    categoriesRequest: null,
    categoriesSucceed: ['payload'],
    categoriesFailed: null
})

參考: https : //github.com/infinitered/reduxsauce#createactions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM