here에서 찾을 수있는 반응 datepicker 구성 요소를 사용하고 있습니다. 구성 요소는 감독으로 보이는 것을 제외하고는 꽤 큽니다 : willReceiveProps
을 구현하지 않습니다. 내가 startDate
을 통과 소품 defaultValue
이react willReceiveProps 외부 라이브러리에 대한 해결 방법
<DateField
dateFormat= { dateFormat}
forceValidDate={true}
defaultValue={startDate || ''}
onChange={this.handleChange.bind(null, 'start_date')}
id="start"
>
<DatePicker
navigation={true}
locale="en"
forceValidDate={true}
highlightWeekends={true}
highlightToday={true}
weekNumbers={true}
weekStartDay={0}
/>
</DateField>
참고 위의 것을 :
내가 아래로 datpicker를 작성, 상세히 설명합니다. 이제startDate
은 때로는 구성 요소 외부의 이유로 변경할 수 있습니다. 이 값은 평소대로 새로운
render()
액션 중에 전달됩니다. 반응 철학에 따르면 이것은 문제가되어서는 안된다.
그러나 마치 defaultValue
의 값이 DateField
안에 한 번만 읽힌 것처럼 보입니다. this.props.defaultValue
으로 읽습니다. 소품에 의존하는 구성 요소를 만든 사람이라면 누구나 이것이 문제라는 것을 빨리 인식해야합니다. 이것은 지주가 변경 될 때 새로운 값이 사용되지 않음을 의미합니다.
이 라이브러리이기 때문에 단순히 willReceiveProps
을 구현할 수 없습니다. 누구든지이 문제를 해결하기 위해 render
또는 다른 전략을 사용하여 큰 문제를 해결할 수있는 좋은 해결 방법을 알고 있습니까?
'key = {startDate}'를'DateField'에 추가하면 startDate가 변경 될 때 다시 렌더링됩니다. – elmeister
그들은 willReceiveProps를 구현하지 않았다는 것을 두 번 확신합니까? 항상 반응을 구현할 필요는 없기 때문에 컴포넌트 자체를 업데이트합니다. 코드에서 shouldComponentUpdate()를 사용 했습니까? – iamsaksham