我创建了一个 React Native 应用程序。我的 index.ios.js
我将中间件添加到商店。
import React, { Component } from 'react'
import {
AppRegistry,
} from 'react-native'
import { Provider } from 'react-redux'
import { applyMiddleware, createStore } from 'redux'
import createLogger from 'redux-logger'
import createSagaMiddleware from 'redux-saga'
import reducer from './src/reducers'
import * as sagas from './src/sagas'
import Scene from './src/components/scene'
const store = createStore(
reducer,
applyMiddleware(createSagaMiddleware(...sagas), createLogger())
);
const CitiesApp = () => (
<Provider store={store}>
<Scene />
</Provider>
);
AppRegistry.registerComponent('CitiesApp', () => CitiesApp);
我有一个行动:
export const USER_FETCH_REQUESTED = 'USER_FETCH_REQUESTED';
export const fetchUser = () => ({
type: USER_FETCH_REQUESTED
});
我从组件中的 componentDidMount
调用
componentDidMount() {
this.props.dispatch(fetchUser());
console.log('componentDidMount')
}
我还有一个传奇:
export function* watchUserFetch() {
console.log('watchUserFetch');
yield take(actions.USER_FETCH_REQUESTED);
yield fork(fetchUser);
}
function* fetchUser() {
try {
const user = yield call(() => Api.fetchUser());
yield put({type: actions.USER_FETCH_SUCCEEDED, user});
} catch (e) {
yield put({type: actions.USER_FETCH_FAILED, message: e.message});
}
}
但是这个传奇行不通。我在控制台中没有看到 watchUserFetch
并且 fetchUser
函数未运行。
我的错误在哪里?为什么 fetchUser
不运行?
最佳答案
创建根传奇
export default function* rootSaga() { yield [ watchUserFetch() ] }
然后运行rootSaga
import createSagaMiddleware from 'redux-saga'; import rootSaga from './sagas.js'; const sagaMiddle= createSagaMiddleware(); const store = createStore(reducer, applyMiddleware(sagaMiddle,createLogger()) ); sagaMiddle.run(rootSaga);
关于javascript - 我的 redux-saga 有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39400905/