redux传奇选择器,如何从传奇中访问状态?

以前也有人问过类似的问题,但答案对我没有任何帮助

redux中的选择器是什么

如何从redux saga函数中的状态/存储中获取内容

我认为我有一个不同的设置,因为我似乎无法从我的传奇中访问状态

我试着做:

const getList=store=>百货商店
const getList=state=>状态

它们都返回未定义的

我的商店看起来像这样

导出默认函数createStoreWithMiddleware(){
const sagaMiddleware=createSagaMiddleware();
const loggerMiddleware=createLogger();
const中间件=[sagaMiddleware,loggerMiddleware];
const persistedState=localStorage.getItem('reduxState')?JSON.parse(localStorage.getItem('reduxState')):{};
const store=createStore(reducer、persistedState、compose(
applyMiddleware(…中间件)
));
store.subscribe(()=&gt{
setItem('reduxState',JSON.stringify(store.getState());
});
sagaMiddleware.run(rootSaga);
退货店;
}

我想访问我在这部传奇中的列表:

功能*选择投标(操作){
试一试{
const response=yield Api.getTenderById(action.payload);
收益率卖出({type:'SELECT_TENDER_successed',currentTender:response});
const list=收益率选择(getList);
屈服put({type:'FETCH_CHAPTERS',chaptersList:list,tenderId:response.id});
}捕捉(错误){
产量投入({type:'SELECT_TENDER_FAILED',message:err.message});
}
}
导出功能*watchSelectTender(){
收益率(“选择投标”,选择投标);
}

但是就像我说的,statestore都是未定义的

那么,我如何访问传奇中的商店(或州)

你必须使用选择器来实现这一点。我将给出一个简单的例子。
创建一个文件selectors.js,并添加要从应用商店中选择的字段,如下所示

导出常量用户名=(状态)=>state.user.name;

然后在您的故事中,将选择器导入为

import*作为“/selectors”中的选择器;

当您在传奇故事中需要username时,您只需

从“redux saga/effects”导入{select};
...
...
函数*sampleSaga(参数){
const username=yield select(selectors.username);
}

sampleSaga中的常量username现在将保存state中的用户名值

发表评论