반응형
국가/스토어에서 레독스가 기능을 통해 물건을 얻는 방법은 무엇입니까?
saga 함수 내의 redux 상태에 액세스하려면 어떻게 해야 합니까?
간단한 답변:
import { select } from 'redux-saga/effects';
...
let data = yield select(stateSelectorFunction);
이미 @markerikson이 말했듯이redux-saga
를 호출하기 위해 매우 유용한 API를 공개합니다.selector
그 중 일부를 입수할 수 있도록 하는 것에 대해서요.
예를 들어 간단한 구현은 다음과 같습니다.
/*
* Selector. The query depends by the state shape
*/
export const getProject = (state) => state.project
// Saga
export function* saveProjectTask() {
while(true) {
yield take(SAVE_PROJECT);
let project = yield select(getProject); // <-- get the project
yield call(fetch, '/api/project', { body: project, method: 'PUT' });
yield put({type: SAVE_PROJECT_SUCCESS});
}
}
@markerikson의 추천 문서 외에 D의 매우 좋은 비디오 튜토리얼이 있습니다.사용법을 설명하는 아브라모프selectors
레독스와 함께.트위터에서 이 흥미로운 스레드도 확인하세요.
이것이 "실렉터" 함수의 목적입니다.주 전체 트리를 넘겨주면 주의 일부를 돌려주죠셀렉터를 호출하는 코드는 데이터가 반환된 상태에서의 위치를 알 필요가 없습니다.예에 대해서는, http://redux.js.org/docs/recipes/ComputingDerivedData.html 를 참조해 주세요.
사가 내에서 API를 사용하여 셀렉터를 실행할 수 있습니다.
event Channel을 사용하여 생성기 함수 내의 콜백에서 액션을 디스패치했습니다.
import {eventChannel} from 'redux-saga';
import {call, take} from 'redux-saga/effects';
function createEventChannel(setEmitter) {
return eventChannel(emitter => {
setEmitter(emitter)
return () => {
}
}
)
}
function* YourSaga(){
let emitter;
const internalEvents = yield call(createEventChannel, em => emitter = em)
const scopedCallback = () => {
emitter({type, payload})
}
while(true){
const action = yield take(internalEvents)
yield put(action)
}
}
언급URL : https://stackoverflow.com/questions/37772877/how-to-get-something-from-the-state-store-inside-a-redux-saga-function
반응형
'programing' 카테고리의 다른 글
AngularJs: $routeProvider를 사용하여 컨트롤러를 두 번 호출합니다. (0) | 2023.04.05 |
---|---|
CSS 또는 jQuery에서 단어 사이의 줄 바꿈과 구두점을 방지하려면 어떻게 해야 합니까? (0) | 2023.04.05 |
AngularJS - 백엔드에서 프런트엔드로 값 전달 (0) | 2023.04.05 |
WordPress 플러그인의 함수에서 CSV 파일을 다운로드하는 방법은 무엇입니까? (0) | 2023.04.05 |
Oracle의 DATIFF 함수 (0) | 2023.04.05 |