Reactjs react将接收外部库的Props解决方案

Reactjs react将接收外部库的Props解决方案,reactjs,render,web-component,Reactjs,Render,Web Component,我正在使用可以找到的react datepicker组件。该组件非常棒,只是看起来有点疏忽:它没有实现willReceiveProps 为了详细说明,我创建了datpicker,如下所示: <DateField dateFormat= { dateFormat} forceValidDate={true} defaultValue={startDate || ''} onChange={this.handleChange.bind(null, 'start_date')}

我正在使用可以找到的react datepicker组件。该组件非常棒,只是看起来有点疏忽:它没有实现
willReceiveProps

为了详细说明,我创建了datpicker,如下所示:

<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>

请注意,上面有一个prop
defaultValue
,我将其传递给
startDate
。现在,
startDate
可以而且确实会因为组件外部的原因而改变。该值在新的
render()
操作期间按常规传递。根据react哲学,这不应该是个问题

但是,在我看来,
defaultValue
中的值在
DateField
中只读取一次。它被解读为
this.props.defaultValue
。任何曾经依靠道具构建过组件的人都应该很快意识到这是一个问题。这意味着当道具更改时,将不会使用新值


因为这是一个库,我不能简单地实现
willReceiveProps
。有没有人知道一个好的解决方法,可以让这个组件在
渲染时完全重置
,或者使用其他策略来处理一个看起来很大的设计问题?

它们遵循与
组件相同的标准<代码>默认值仅读取一次,但也有可在外部设置的值。他们不需要使用
willReceiveProps

简而言之,使用
value
而不是
defaultValue


PS:我正在研究代码,除了
之外,似乎还有属性
文本
日期
。由于代码(和文档)已从github中删除,我将不检查这些道具之间的区别。

它们遵循与
组件相同的标准<代码>默认值仅读取一次,但也有可在外部设置的值。他们不需要使用
willReceiveProps

简而言之,使用
value
而不是
defaultValue


PS:我正在研究代码,除了
之外,似乎还有属性
文本
日期
。由于代码(和文档)已从github中删除,我将不检查这些道具之间的区别。

我想如果您将
key={startDate}
添加到
日期字段
,当startDate发生更改时,它将被重新呈现。您确定他们没有实现
willReceiveProps
?因为当react更新组件本身时并不总是需要实现它。您是否在代码中使用了
shouldComponentUpdate()
?我想如果您将
key={startDate}
添加到
DateField
,它将在startDate更改时重新呈现。您是否双重确认它们没有实现
willReceiveProps
?因为当react更新组件本身时并不总是需要实现它。您的代码中是否使用了
shouldComponentUpdate()
?非常感谢您的详细解释。我是个新手,不知道这个标准存在<代码>值工作正常。非常感谢您的详细解释。我是个新手,不知道这个标准存在<代码>值工作正常。