以前也有人问过类似的问题,但答案对我没有任何帮助
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(()=>{
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(){
收益率(“选择投标”,选择投标);
}
但是就像我说的,state
和store
都是未定义的
那么,我如何访问传奇中的商店(或州)
你必须使用选择器来实现这一点。我将给出一个简单的例子。
创建一个文件selectors.js
,并添加要从应用商店中选择的字段,如下所示
导出常量用户名=(状态)=>;state.user.name;
然后在您的故事中,将选择器导入为
import*作为“/selectors”中的选择器;
当您在传奇故事中需要username
时,您只需
从“redux saga/effects”导入{select};
...
...
函数*sampleSaga(参数){
const username=yield select(selectors.username);
}
sampleSaga
中的常量username
现在将保存state中的用户名值