플럭스 베스트 프랙티스:디스패치 액션, AJAX 콜을 Web API Utils에 저장합니다.

저는 이 이미지가 전부는 아니더라도 대부분의 플럭스 프로그래머들에게 궁극적인 가이드라는 것을 알고 있습니다.이 흐름을 염두에 두고 몇 가지 질문이 있습니다.
- 이 모든 것을 사용하는 것이 올바른가/매우 권장되는가?
$.ajax웹 API Utils에서 호출할 수 있습니까?- 콜백은 액션 크리에이터를 호출하여 프로세스 내의 데이터를 전달합니다.
- Store에서 AJAX를 호출하려면 먼저 Action Creator를 호출해야 합니다.Web API Utils의 함수를 스토어에서 직접 호출하는 것은 근본적으로 잘못된 것입니까?
- 스토어에서 Action Creators로 연결되는 가상 단측 화살표 같은 것이 있습니까?
- 뷰를 거치지 않는 작업이 많습니다.
- 디스패처와 스토어 간의 콜백은 무엇입니까?
- 여기 웹 API가 뭐죠?여기가 RESTful API를 적용하는 곳인가요?어디 이런 예가 있을까요?
Action Creator 중 하나에 (어떤 Action을 디스패치할지 알기 위한) 논리가 포함되어 있어도 괜찮습니까?기본적으로 이 액션은 AJAX 콜로부터 응답을 받습니다.다음은 토막입니다.
var TransportActions = { receiveProxyMessage: function (message, status, xhr) { switch (message) { case ProxyResponses.AUTHORIZED: AppDispatcher.dispatch({ type: ActionTypes.LOGIN_SUCCESS, reply: m }); break; case ProxyResponses.UNAUTHORIZED: AppDispatcher.dispatch({ type: ActionTypes.LOGIN_FAIL, reply: m }); break; ... } } }
저는 온라인에서 많은 다양한 답변을 보았지만, 아직도 어떻게 그것들을 제 어플리케이션에 포함시킬지 잘 모르겠습니다.타이아!
웹 API Utils에 $.ajax 콜을 모두 포함하는 것이 올바른가?콜백은 액션 크리에이터를 호출하여 프로세스 내의 데이터를 전달합니다.
예, 모든 요청을 단일 엔티티(예: Web API Utils)에 저장해야 합니다.그들은 어떤 상점에서도 이에 대한 대응을 선택할 수 있도록 응답을 발송해야 합니다.
얼마 전 블로그 포스트에 의뢰에 대한 대처법을 기재했습니다.http://www.code-experience.com/async-requests-with-react-js-and-flux-revisited/
Store에서 AJAX를 호출하려면 먼저 Action Creator를 호출해야 합니다.Web API Utils의 함수를 스토어에서 직접 호출하는 것은 근본적으로 잘못된 것입니까?
이것은 좋은 질문입니다.제가 본 바로는 사람마다 조금씩 다릅니다.(Facebook의) 플럭스는 완전한 답을 제공하지 않습니다.
여기서는 일반적으로 다음 두 가지 방법을 사용할 수 있습니다.
저장소에서 데이터를 "요구"하지 말고 작업을 요약하여 보기에 통지해야 한다는 주장을 할 수 있습니다.즉, 저장소가 비어 있는 경우 구성 요소 내에서 "가져오기" 작업을 실행해야 합니다.즉, 모든 데이터 리스닝 뷰에서 데이터를 가져와야 하는지 확인해야 합니다.이로 인해 여러 뷰가 동일한 스토어를 수신할 경우 코드가 중복될 수 있습니다.
Store는 데이터를 요청받으면 실제로 전달해야 할 상태가 있는지 확인하는 점에서 "스마트"합니다.그렇지 않으면 API Utils에 데이터를 가져와 보류 상태를 뷰로 반환하도록 지시합니다.
이 "데이터를 가져오도록 API에 지시"는 콜백 기반 작업이 아니라 "발화 후 잊기" 작업입니다.API는 요청이 반환되면 액션을 디스패치합니다.
저는 옵션 1보다 옵션 2가 더 좋고, 페이스북 팀의 빌 피셔가 이렇게 한다고 하는 것을 들은 적이 있습니다.(위 블로그 포스트의 코멘트를 참조해 주세요.
아니요, 제 생각에는 매장에서 직접 API를 호출하는 것이 근본적으로 잘못된 것은 아닙니다.
스토어에서 Action Creators로 연결되는 가상 단측 화살표 같은 것이 있습니까?
플럭스의 실장에 따라서는, 실현 가능성이 매우 높아집니다.
디스패처와 스토어 간의 콜백은 무엇입니까?
이러한 함수는 스토어의 상태를 실제로 변경할 수 있는 유일한 함수입니다.각 스토어는 콜백을 디스패처에 등록합니다.모든 콜백은 액션이 디스패치될 때마다 호출됩니다.각 콜백은 지정된 액션유형에 따라 스토어를 변환해야 하는지 여부를 결정합니다.일부 플럭스 라이브러리는 이 구현 세부 정보를 숨기려고 합니다.
여기 웹 API가 뭐죠?여기가 RESTful API를 적용하는 곳인가요?어디 이런 예가 있을까요?
그림에서 웹 API 직사각형은 실제 서버를 나타내며 API Utils는 서버에 호출하는 서버($.ajax 또는 superagent)라고 생각합니다.JSON을 지원하는 RESTful API일 가능성이 높습니다.
일반적인 조언:
플럭스는 매우 느슨한 개념이며, 정확한 구현은 팀에 따라 달라집니다.Facebook은 시간이 지남에 따라 여러 가지 접근 방식도 변화하고 있는 것을 알 수 있었습니다.정확한 주기는 엄밀하게 정의되어 있지 않다.다만, 몇개의 「고정」한 것이 있습니다.
- 모든 액션을 모든 스토어에 디스패치하고 이벤트 체인 헬을 방지하기 위해 한번에1개의 액션만 허용하는 디스패처가 있습니다.
- 저장소는 작업 수신기로, 모든 상태를 작업을 통해 변경해야 합니다.
- 액션은 "fire and forget"(콜백 없음)입니다.
- 뷰는 스토어에서 상태를 수신하고 작업을 수행합니다.
그 외의 작업은, 실장 마다 다릅니다.
- 웹 API Utils에 $.ajax 콜을 모두 포함하는 것이 올바른가?콜백은 액션 크리에이터를 호출하여 프로세스 내의 데이터를 전달합니다.
그렇고 말고요.
- Store에서 AJAX를 호출하려면 먼저 Action Creator를 호출해야 합니다.Web API Utils의 함수를 스토어에서 직접 호출하는 것은 근본적으로 잘못된 것입니까?
먼저, 왜 당신의 가게가 API 호출을 해야 하는지 자문해보세요.제가 생각할 수 있는 유일한 이유는 당신이 받은 데이터를 스토어에 캐시하고 싶기 때문입니다(이렇게 하겠습니다).
가장 간단한 플럭스 구현에서는 모든 작업이 View 및 Server에서만 생성됩니다.들어 "Profile는 "Profile" 뷰를 합니다.profileRequestaction creator, action creator, creator,ApiUtils라고 불리며, 일부 데이터가 수신됩니다.ServerAction 「」, 「」, 「」, 「」,ProfileStore와 「」를 합니다.ProfileView럼럼됩됩됩됩됩
사용 시: " " " " :ProfileViewProfileStore프로파일의 이 오브젝트가 "loading"인빈되고 "loading"이 호출됩니다.ApiUtils그 프로파일을 취득합니다(잊고 있습니다).되면, 「」가 .ServerActionProfileStore은 잘작동한다.액션 크리에이터, 액션 크리에이터
MartyJS도 비슷한 일을 합니다.일부 플럭스 구현은 약속과 동일한 작업을 수행합니다.
중요한 것은 데이터가 시스템에 돌아왔을 때 Server Action Creator가 새로운 데이터와 함께 호출된다는 것입니다.그런 다음 다시 스토어로 흘러들어갑니다.
스토어는 데이터만 조회해야 하며 상태 변경 작업(업데이트 작업)은 모두 사용자가 시작(뷰에서 가져오기)해야 합니다.Facebook의 엔지니어는, 다음의 URL 에 이것에 대해 쓰고 있습니다.
- 스토어에서 Action Creators로 연결되는 가상 단측 화살표 같은 것이 있습니까?
매장을 스마트하게 만들고 싶다면: 네.앱을 단순하게 만들고 싶은 경우: 아니요, 보기를 참조하십시오.
- 디스패처와 스토어 간의 콜백은 무엇입니까?
이것들은 매장에서 구할 수 있는 디스패치 핸들러입니다.디스패처는 액션을 실행하고 스토어는 이 화재 이벤트를 듣고 액션/페이로드에 대한 조치를 취합니다.
- 여기 웹 API가 뭐죠?여기가 RESTful API를 적용하는 곳인가요?어디 이런 예가 있을까요?
여기가 에이잭스 콜이 가는 곳이야일반적으로 이것은 REST API를 의미하지만 웹소켓 또는 기타 여러 가지를 의미할 수 있습니다.저는 항상 이 튜토리얼을 좋아합니다.http://fancypixel.github.io/blog/2015/01/29/react-plus-flux-backed-by-rails-api-part-2/
면책사항: 이것은 플럭스에 대한 나의 해석이다.플럭스 자체로는 데이터 가져오기 문제를 해결할 수 없기 때문에 FB에서 Relay와 GraphQL을 개발했습니다.
언급URL : https://stackoverflow.com/questions/29986108/flux-best-practices-stores-dispatching-actions-ajax-calls-in-web-api-utils
'programing' 카테고리의 다른 글
| Wordpress 3.0용 데이터베이스에서는 사용자 지정 메뉴가 어디에 저장됩니까? (0) | 2023.04.05 |
|---|---|
| resactj의 렌더와 반환의 차이점은 무엇입니까? (0) | 2023.04.05 |
| 치명적 오류: /public_html/wp-includes/load의 정의되지 않은 함수 apply_filters()를 호출합니다.317행의 php (0) | 2023.04.05 |
| AngularJs에서 인터넷 연결을 확인하는 방법 (0) | 2023.04.05 |
| Application Runner 및 Runner 인터페이스가 필요한 시기와 이유는 무엇입니까? (0) | 2023.04.05 |