hereという反応の日付ピッカーコンポーネントを使用しています。このコンポーネントは、見過ごされているものを除いてかなり素晴らしいです。willReceiveProps
を実装していません。言えば、react willReceiveProps外部ライブラリの回避策
、Iは以下のようにdatpicker作成:私はstartDate
を通るプロパdefaultValue
があること
<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>
注上記。さて、startDate
は、時にはコンポーネントの外部にある理由から変更することができます。この値は、通常のように新しいrender()
アクション中に渡されます。反応哲学によると、これは問題ではないはずです。
defaultValue
の値がDateField
の中で一度しか読み取られないように見えます。それはthis.props.defaultValue
と読み替えられます。小道具に頼ってコンポーネントを構築したことがある人は、これが問題であるとすぐに認識するはずです。これは、小道具が変更されたときに新しい値が使用されないことを意味します。
これはライブラリなので、私は単にwillReceiveProps
を実装することはできません。誰もが、このコンポーネントをrender
または他の戦略で完全にリセットして、大きな設計上の問題と思われるものを処理するための良い回避策を知っていますか?
'key = {startDate}'を 'DateField'に追加すると、startDateが変更されたときに再レンダリングされると思います。 – elmeister
あなたは 'willReceiveProps'を実装していないことを二重に確信していますか?なぜなら、必ずしもそれを実装する必要はないので、反応はコンポーネント自体を更新するからです。あなたのコードで 'shouldComponentUpdate()'を使用しましたか? – iamsaksham