4
비슷한 질문이 전에 제기되었지만 답변이 저에게 도움이되지 않았습니다. redux saga 선택기, 어떻게 사가에서 상태에 액세스합니까?
How to get something from the state/store inside a redux-saga function?
나는 내 무용담에서 상태에 액세스 할 수없는 것 때문에 내가 다른 설정을 가지고 있다고 생각합니다.
const getList = store => store;
const getList = state=> state;
이러한 두 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;
}
... 다음과 같습니다 그리고이 모험에 내 목록에 액세스하려면 :
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);
}
을하지만, 내가 말했듯이, 모두 state
및 store
은 정의되지 않습니다.
그렇다면 사가에서 내 스토어 (또는 주)에 어떻게 액세스합니까?
내가 말했듯이, 상태는 정의되지 않은 반환 : ( – Winter
사실 내가 그것을 잘못 디버깅했다. 전체'yield select (selectors.username);을 사용했을 때 그것은 효과적이었다 - 마술처럼 :) – Winter