2017-09-24 14 views
0

API에서 데이터를 가져 와서 스토어 콜렉션과 병합하여 적절한 계산을 트리거하여 뷰를 다시 평가하고 채우는 비동기 액션이 있습니다.React 컴포넌트 라이프 사이클 메소드에서 MobX 액션을 호출하는 것은 나쁜 습관입니까

내 이전 솔루션은 @ async-calculated를 사용하여 몸에 트리거 변수를 포함 시켰으며 (불행히도 재 계산을 트리거하는 데 사용되지 않음) 뷰를 채 웁니다.

@ computed-async -> @async 작업 리팩터링에 만족하지만 만난 마지막 장애물 하나가 나를 방황하게 만듭니다.

@computeds가 처음으로 도달 할 때 계산 된 시간은 처음에 @action이지만 명시 적으로 @action을 호출해야합니다.

저장소 생성자에서 테스트 할 수 없으므로 호출 할 수 없습니다. 유일한 구성 요소는 componentDidMount 또는 React 구성 요소의 WillMount입니다. AFAIK 성능상의 이유로 componentDidMount에서 처리하는 것이 더 좋습니다. 그러나 (!) React life cycle 메서드에서 명시 적으로 작업을 호출해도 괜찮습니까? 아니면 나쁜 습관이라고 생각해야합니까?

지금까지 나는 이것을 피하고 있었지만,이 경우는 @ async-action으로 처리하는 것이 더 나은 것처럼 보이고 나는 더 큰 디자인 패턴을 깨지 않는 한 그것에 충실하고 싶습니다. 미래에 내 얼굴에.

감사합니다.

+0

up? 최대 최대 최대? – azrahel

답변

0

테스트 할 수 없다는 것은 무엇을 의미합니까? 구성 요소에 표시 할 데이터/저장소가 필요한 경우 스텁을 사용하여 데이터를 제공 할 수 있습니까?

자세한 내용은 https://hackernoon.com/how-to-decouple-state-and-ui-a-k-a-you-dont-need-componentwillmount-cc90b787aa37

+0

my @action은 매개 변수 (서버에서 가져올 항목의 수)를 사용하여 가져옵니다. 테스트에서 항상 저장소를 만들 때마다 해당 특정 값으로 특정 가져 오기를 호출하기 때문에 고정 된 매개 변수 값을 사용하여 생성자에서 명시 적으로 호출 할 수 없습니다. 그것은 테스트 할 수 없습니다. - 0을 전달하면 아무것도 가져 오지 않는 경우 API 또는 테스트에서 다른 양을 가져 오려면 어떻게해야합니까? 코드가 생성자에 있으면 깨끗한 방식으로 코드를 작성할 수 없습니다. 생성자는 부작용이 없어야합니다. 예 : API 호출. – azrahel

+0

테스트에서 당신은 가져 오기 자체 (상점의 일부인 것인가?)와 가져온 데이터를 구성 요소에서 사용하는 방법을 분리해야한다고 생각합니다. 게시 한 링크에서 가져 오기가 라우터에 의해 호출됩니다. – Lucas