2017-09-14 2 views
1

매개 변수라는 스토어 객체 (JAVA API와 상호 작용하도록 연결을 사용하는 React-Redux App)가 있습니다. 나의 새로운 구성 요소에서소품 (점포) 변경 수행

내가 입력이 요법 상자를 선택 업데이트 할 때이 객체가 다른 구성 요소에 업데이트됩니다 ...

나는에 JSON으로 일부 처리 후이 객체를 전송하는 "템플릿 저장과 같은"버튼이 내 API.

이상한 기능을 가진 새 구성 요소 내의이 Object (parameters)에 대한 변경 사항을 CATCH하고 ​​싶습니다.

일련의 "if"테스트를 실행할 수 있도록 일부 입력이 누락되어 있는지 확인하고 "템플릿으로 저장"버튼을 숨기거나 회색으로 표시하는지 확인하십시오.

그럴 수 있습니까?

componentDidMount() { 

} 

componentWillReceiveProps() { 

} 

많은 도움이 될 것 같지 않습니다.

+1

코드를 게시 할 수 있습니까? –

+1

그것의 소리에서'render()'함수로이 모든 것을 할 수 있습니다. – Aaron

+1

렌더 메소드에서 객체의 유효성을 검사하고 유효성 검사가 실패 할 경우 버튼을 비활성화로 렌더링 할 수 있습니다. 라이프 사이클 메소드를 사용할 필요가 없습니다. – trixn

답변

2

네,이 패턴은 제가 몇 번 사용해야했던 패턴이고, 그것을 처리하기 위해 lodash.isEqual을 사용했습니다.

import { isEqual as _isEqual } from "lodash" 

당신이 저장에서 매개 변수 개체를 가지고 말해 당신은 (예를 들어, 또는 그러나 다른 당신이 그것을에 액세스 할 수 있어요) mapStateToProps의 구성 요소에서 그것을보고있는 :

const mapStateToProps = (state) => ({ 
    parameters: state.someApp.parameters, 
}); 

당신을 귀하의 구성 요소에서 무엇이 변경되었는지 확인할 수 있습니다 .WillReceiveProps :

componentWillReceiveProps(nextProps) { 
    if(!_isEqual(this.props.parameters, nextProps.parameters)) { 
     this.props.sendSomeRequestWithParameters(nextProps.parameters) 
    } 
} 
+0

정말 멋진 덕분입니다. 양자 택일로이 경우 밝혀 졌 듯이 렌더링과 반환 사이에 두 개의 부울 (실제로 두 개의 매개 변수 객체가 있음)을 선언하고 내 "if"테스트 배터리에 대한 응답을 저장할 수 있습니다. 일단 내 버튼의 렌더링 내에서 if (booleanOne || booleanTWO)를 기반으로 표시하기로 결정한 두 세트의 버튼 중 어느 것을 결정할 수 있습니다. 무슨 뜻인지 알 겠어? – tatsu