2017-02-04 10 views
1

저는 React에 매우 익숙합니다. 필자는 필자가 여러 개의 React 구성 요소에 삽입하여 사용할 수있는 서비스 (하나의 인스턴스)를 기본적으로 갖게되었습니다. 의 컨텍스트 반응 사용IoC in types of typecript

  • 하지만 문서화되지 않은 API이기 때문에 그것은,하지 않는 것이 좋습니다 :

    지금까지 제가 인터넷 검색으로 건너 한 옵션이었다.
  • 구성 요소 요소에서, 소품에 따라 객체를 전달하지만, 조금 우아하고 지루한 느낌 같은 멋지다, 단지 그것을 타이프 라이터에 의존, 내가 돈 'inversifyJS, 같은 IoC 컨테이너를 사용
  • 내 React 앱을 타이프 스크립트로 쓰고 싶다. 이제

, Inversify 분명히 inversify-vanillajs-helpers로, 바닐라 JS에서 사용할 수 있습니다,하지만 난 그것의 구성 요소를 해결에 반응 사용하려고 할 때 (내 App 구성 요소)이라는 예외를 던지는 유지

"ReactComponent에서 필요한 @ 주입 가능한 주석을 누락했습니다."

그래서 저는 (예 : 사용하는 몇 가지 구성 요소에서 같은 인스턴스가 공유되는) 서비스의 인스턴스를 얻는 방법을 찾으려고합니다. Revers와 일을 inversify하지만 필기체가 없거나 아직 탐구하지 않은 새로운 접근법이 있습니다.

아이디어가 있으십니까?

+0

당신은 그것으로 당신의 반작용 부품을 포장 한 후 상위 서비스 구성 요소를 만들 수 있습니다. – Shota

답변

0

는 타이프 좋아하지 않는 경우에 당신이 할 수있는 몇 가지가 있습니다

첫째, 당신은 inversify.decorate 방법을 필요로 할 것입니다.

둘째,이 방법은 너무 자세하게 작성됩니다. 이러한 이유로 inversify-vanillajs-helpers이라는 도우미를 만들었습니다.

세 번째로 React는 생성자 삽입과 잘 작동하지 않으므로 inversify-inject-decorators이라는 지연 속성 주입을 용이하게하는 도우미를 만들었습니다.

그 세 가지 도구는 원하는 결과에 요를 연결되어야합니다 :)

+0

불행히도 inversify-inject-decorators에는 TypeScript가 필요합니다. 패키지의 바닐라 버전이 있습니까? 아무것도 찾을 수 없습니다. 또는 속성 삽입을 위해 속성에 주석을 달기 위해 장식을 사용하는 방법일까요? –

+0

상태 업데이트 : React 구성 요소에''inversify-vanillajs-helpers''를 사용하여 주석을 달았습니다. 여전히 작동하지 않았기 때문에 주입 된 모든 종속성을 제거하려고했습니다 (그리고''annotate''를 반영하여 반영했습니다). 그런 다음, (의존성이 주입되지 않은 상태에서) 컨트롤러를 분석하려고 시도했지만 여전히 동일한 메시지가 있습니다. 필요한 @injectable 주석이 없습니다 : ReactComponent. (주석을 호출하지 않으면 유사한 메시지를 가지지 만''ReactComponent''가 아니라''App''이 언급되어 있습니다.) –

+0

vanillajs 헬퍼 패키지를 사용하여 ReactComponent에 주석을 추가하면 새 오류 메시지가 나타납니다. _ 파생 클래스의 생성자 인수 개수가 기본 클래스의 생성자 인수 개수보다 많아야합니다. _ –