jjzjj

javascript - Redux-saga 不等待 API 的响应

我使用redux-saga并创建了一个生成器checkUsername来执行API调用。虽然constusername将等于来自API的响应,但我有undefined。function*checkUsername(action){try{constusername=yieldcall(Api.checkUsername,action.username);yieldput({type:actions.USERNAME_CHECK_SUCCEEDED,username});}catch(e){yieldput({type:actions.USERNAME_CHECK_FAILED,mess

javascript - Redux Saga navigator.geolocation.getCurrentPosition

我使用reduxsaga创建应用程序,但我遇到了地理定位问题。实际上我找到了解决方案,但我不明白它是如何工作的。functionuserPositionPromised(){constposition={}if(navigator.geolocation){navigator.geolocation.getCurrentPosition(location=>position.on({location}),error=>position.on({error}),{enableHighAccuracy:true})}return{getLocation:()=>newPromise(loc

javascript - redux saga 和 history.push

背景:我正在创建一个Login组件。saga.js由3个函数组成1.rootSaga。它将执行sagas里面的列表2.watchSubmitBtn。它会观察提交按钮的点击并发送一个Action。3.shootApiTokenAuth会接收派发的action并处理axios.post返回值为promise对象在行动:后端返回400给React。这种情况没问题,我可以轻松读取payload并在render()中显示。但是当返回200时。我需要让用户转到url/companies。尝试:我曾尝试将this.props.history.push('/companies');放在componen

javascript - 使用 Redux-Saga 的 Firebase 身份验证不起作用

我正在尝试使用firebase身份验证创建一个新用户。我正在使用redux-saga进行上述调用。下面是我的saga.js:import{takeLatest,put}from'redux-saga/effects';import{SIGN_UP,AUTHENTICATION_FAILED,SIGN_UP_SUCCESS}from'../actions/index';importfirebasefrom'firebase';function*signUp(action){console.log("abouttocallauthentication");//Thisbeingprinte

javascript - Redux-Saga 文档中奇怪的登录流程示例

例如,如果您阅读thisredux-saga文档中的部分有一个与登录流程相关的示例,如下所示。function*loginFlow(){while(true){yieldtake('LOGIN')//...performtheloginlogicyieldtake('LOGOUT')//...performthelogoutlogic}}正如那里所说:TheloginFlowSagamoreclearlyconveystheexpectedactionsequence.ItknowsthattheLOGINactionshouldalwaysbefollowedbyaLOGOUTact

javascript - 如何使用 Redux-Saga 避免重复的 API 请求?

到目前为止,与其他Flux实现相比,我更喜欢Redux,并且我正在使用它来重写我们的前端应用程序。我面临的主要困难点:维护API调用的状态以避免发送重复请求。维护记录之间的关系。第一个问题可以通过在每种数据类型的子状态中保留一个状态字段来解决。例如:functionpostsReducer(state,action){switch(action.type){case"FETCH_POSTS":return{...state,status:"loading",};case"LOADED_POSTS":return{status:"complete",posts:action.posts,

javascript - 在另一个 Saga 中使用 Action/Saga

我有一个Saga,我需要在其中执行3个异步请求,然后在后续请求中使用这3个请求的响应。这里有一些伪代码来解释:function*useOtherActionsAndSagas(action){try{const[response1,response2,response3]=yield[request1,request2,request3];constorderData={...response1,...response2,...response3,};constresponse4=yieldrequest4;yieldput({type:'SUCCESS',data:response4

javascript - yield [] 和 yield all() 的区别 - ES6/redux-saga

与ES6的内置yield[]相比,使用redux-saga的yieldall([])有什么优势吗?要并行运行多个操作,redux-saga建议:constresult=yieldall([call(fetchData),put(FETCH_DATA_STARTED),]);但是不用​​all()方法也可以完成同样的事情:constresult=yield[call(fetchData),put(FETCH_DATA_STARTED),];哪个更好,为什么? 最佳答案 没有功能差异,正如MateuszBurzyński(redux-s

javascript - 在 saga : `while(true) take()` vs `while(take())` vs. `takeEvery()` 中监听 Action 的最佳方式

我见过sagas以3种方式监听Action:1。while(true)take()function*onUserDetailsRequest(){while(true){const{userId}=yieldtake(USER_DETAILS_REQUESTED);constresponse=yieldcall(fetchUserDetails,userId);put(USER_DETAILS_RECEIVED,response);}}2。while(take())function*onUserDetailsRequest(){while(yieldtake(USER_DETAILS_

javascript - 我怎样才能让 redux-saga 以任何顺序等待两个 Action 至少发生一次?

这里是Redux传奇新手。我需要创建一个传奇,从我的API服务器加载redux存储的初始状态。这涉及使用两个异步传奇:getCurrentUser和getGroups。我需要并行发出这些ajax请求并等待GET_CURRENT_USER_SUCCESS和GET_GROUPS_SUCCESS操作,然后再发出告诉UI的pageReady操作是时候渲染React组件了。我想到了一个hacky解决方案:function*loadInitialState(){yieldfork(getCurrentUser)yieldfork(getGroups)while(true){yieldtake([a