Giter Club home page Giter Club logo

Comments (6)

woowa avatar woowa commented on May 18, 2024

안녕하세요. 질문 별로 나누어서 답변드립니다.

리듀서에서 공통 응답 헤더에 따라 실패 처리를 해주고 싶은데 방법을 모르겠네요.
예를 들면 아래와 같은 응답의 경우 요청에 자체를 성공을 한 것이지만 앱에서는 실패로 처리를 하여야 하는데요.

{
  "header": {
    "isSuccessful": false,
    "message": "Error"
  },
  "data": null
}

리듀서의 onSuccess()를 정의하여 처리하려 하여도 리듀서의 소스를 보면 단순히 success 함수의 배열을 차례대로 호출만 해주고 있을 뿐 반환 값의 여부를 보아 실패 처리한다든가 하는 것이 불가능해 보여 방법이 있는 것인지 궁금합니다.

작성하는 동안 this.addError()를 쓰면 되겠다는 생각이 드네요..


요청의 응답이 성공이라면 리듀서에서는 onSuccess로 처리가 됩니다. onSuccess에서 응답 헤더를 판단하여 this.finish(error) 라던지 필요한 처리를 하시면 됩니다.

from woowahanjs.

woowa avatar woowa commented on May 18, 2024

또 리듀서의 소스를 보면 fail()과 finish()에서 this.removeAction()를 호출해주고 있습니다.
만약 onSuccess()에서 finish()를 호출하지 않는다면 직접 removeAction() 처리를 해주어야 하는 것인지요?
마찬가지로 onFail()에서 removeAction()를 직접 처리해주어야 하는지요?


removeAction를 필수로 호출해야 하진 않습니다만. 위의 방법처럼 this.finish(error) 정도로 처리하시면 좋을 것 같습니다.

from woowahanjs.

woowa avatar woowa commented on May 18, 2024

그리고 앱 전역 이벤트로 error 이벤트가 발생했을 경우 레이어 팝업으로 표시를 해주려고 하는데요.
팝업 뷰를 정의했다고 했을 때 이 뷰를 동적으로 추가해주려면 어떻게 해야 하는지요?
뷰 내부에서는 this.addView()를 통해 가능한 것으로 보이는데요.
앱의 이벤트 핸들러에서는 어떤 방법이 예제나 설명을 뒤져보아도 보이지 않아서 질문 드립니다.
물론 뷰의 기능을 무시하고 직접 jQuery를 이용하여 조작하여도 되겠지만 방법이 있을지요?
설명에는 토스트 등을 보여주는데 사용할 수 있다고 되어 있는데 구체적인 방법을 알려주실 수 있을지요?


전역 이벤트 error를 사용하는 방법은 권장하지 않고 있습니다. View 내부에서 error를 처리( 팝업 뷰라던지 )하는 것이 좋을 것 같습니다.

from woowahanjs.

woowa avatar woowa commented on May 18, 2024

추가.
모든 리듀서에서 공통으로 헤더를 판단해야 한다면 리듀서 내에서 use 메소드를 사용하여 미들웨어를 주입하여 처리할 수도 있습니다. 최근에 추가된 기능이어서 아직 문서가 업데이트 안되었는데요. 문서가 업데이트되면 전해드리겠습니다.
예) this.use(Woowahan.Reducer.SUCCESS, successHandler);

감사합니다.

from woowahanjs.

flyskyne avatar flyskyne commented on May 18, 2024

마지막 답변은 문서 업데이트를 기다리겠습니다. :)
현재는 listview 예제를 참고하여 coreReducer를 정의하여 구현하였는데 좀더 좋은 방법이 있는 것 같습니다.

답변 고맙습니다.

from woowahanjs.

ibare avatar ibare commented on May 18, 2024

@flyskyne 리듀서 미들웨어 주입하는 다음의 예제를 참고하세요. :)

https://gist.github.com/ibare/d6bceb1bb9df2b412afaf4302e053537

참고로 리듀서에서 dispatch의 핸들러로 결과를 보내는 this.finish 메소드는 인자 구성 방식에 제약이 없는데요. 이를 이용해 첫 인자는 error 객체, 두 번째 인자는 응답 메세지 객체로 작성하는 방법을 컨벤션으로 사용하고 있습니다. (node 쪽 API 의 컨벤션과 유사합니다. ^^)

그러면 핸들러 쪽에선 성공과 오류에 대하여 일관된 코드 작성이 가능합니다.

this.dispatch(Woowahan.Action.create(USERS), function(err, resp) {
  if (err) {
    // 오류 처리 
  }

 // 응답 처리
});

from woowahanjs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.