Win*_*ter 16 reactjs redux-saga react-redux
之前已经提出了类似的问题,但答案对我没有任何帮助.
我认为我有一个不同的设置,因为我似乎无法从我的传奇访问状态.
我试过做:
const getList = store => store;
const getList = state=> state;
Run Code Online (Sandbox Code Playgroud)
这些都回归了undefined
.
我的商店看起来像这样......
export default function createStoreWithMiddleware() {
const sagaMiddleware = createSagaMiddleware();
const loggerMiddleware = createLogger();
const middleware = [sagaMiddleware, loggerMiddleware];
const persistedState = localStorage.getItem('reduxState') ? JSON.parse(localStorage.getItem('reduxState')) : {};
const store = createStore(reducer, persistedState, compose(
applyMiddleware(...middleware)
));
store.subscribe(() => {
localStorage.setItem('reduxState', JSON.stringify(store.getState()));
});
sagaMiddleware.run(rootSaga);
return store;
}
Run Code Online (Sandbox Code Playgroud)
我想在这个传奇中访问我的列表:
function* selectTender(action) {
try {
const response = yield Api.getTenderById(action.payload);
yield put({type: 'SELECT_TENDER_SUCCEEDED', currentTender: response});
const list = yield select(getList);
yield put({type: 'FETCH_CHAPTERS', chaptersList: list, tenderId: response.id});
} catch (err) {
yield put({type: 'SELECT_TENDER_FAILED', message: err.message});
}
}
export function* watchSelectTender(){
yield takeEvery('SELECT_TENDER', selectTender);
}
Run Code Online (Sandbox Code Playgroud)
但就像我说的,无论是state
和store
是不确定的.
那么,如何在传奇中访问我的商店(或州)?
Vis*_*rma 41
你必须使用选择器.我举一个简单的例子.创建一个文件selectors.js
并添加要从商店中选择的字段,如下所示.
export const username = (state) => state.user.name;
Run Code Online (Sandbox Code Playgroud)
然后在你的传奇中,将选择器导入为,
import * as selectors from './selectors';
Run Code Online (Sandbox Code Playgroud)
当你需要username
在你的传奇中,你可以简单地做,
import {select} from 'redux-saga/effects';
...
...
function *sampleSaga(params) {
const username = yield select(selectors.username);
}
Run Code Online (Sandbox Code Playgroud)
不断username
在sampleSaga
现在将举行从国家的用户名值.
归档时间: |
|
查看次数: |
13803 次 |
最近记录: |