Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用更新的defaultValue重新呈现DatePicker?_Javascript_Reactjs_Datepicker_Material Ui - Fatal编程技术网

Javascript 如何使用更新的defaultValue重新呈现DatePicker?

Javascript 如何使用更新的defaultValue重新呈现DatePicker?,javascript,reactjs,datepicker,material-ui,Javascript,Reactjs,Datepicker,Material Ui,我在以下场景中使用DatePicker: 呈现使用DatePicker的窗体 在componentDidMount上,获取表单保存的信息(如果以前保存过) 将日期选择器的属性defaultValue从undefined设置为获取的值 看起来很简单。但是,由于DatePicker的行为是仅在第一次渲染时渲染defaultValue,因此在获取值(第二次渲染)时,它显然是空的 我看到的另外两个选择: 拥有一个受控组件-手动操作值(在获取值时提供该值,然后在onChange激发时更改该值) 仅当没有要

我在以下场景中使用DatePicker:

  • 呈现使用DatePicker的窗体
  • 在componentDidMount上,获取表单保存的信息(如果以前保存过)
  • 将日期选择器的属性
    defaultValue
    undefined
    设置为获取的值
  • 看起来很简单。但是,由于DatePicker的行为是仅在第一次渲染时渲染
    defaultValue
    ,因此在获取值(第二次渲染)时,它显然是空的

    我看到的另外两个选择:

  • 拥有一个受控组件-手动操作值(在获取值时提供该值,然后在onChange激发时更改该值)

  • 仅当没有要获取的内容(新表单)或数据已获取并准备好填充时,才呈现DatePicker


  • 关于实现这一点的最佳方法有什么想法吗?

    与其填充
    defaultDate
    属性,不如将
    属性挂接到您想要设置的任何位置。使用这种方法,您还需要连接一个
    onChange
    处理程序。它看起来像这样:

    onChange(event, newValue) {
      this.setState({myDate: newValue})
    },
    render() {
      return (
        ...
        <DatePicker value={this.state.myDate} onChange={this.onChangeHandler}>
        ...
      )
    },
    
    onChange(事件,newValue){
    this.setState({myDate:newValue})
    },
    render(){
    返回(
    ...
    ...
    )
    },
    

    或者,您可以使用React的
    LinkedStateMixin
    DatePicker
    valueLink
    道具使用双向绑定功能。

    谢谢,我最终选择了选项2(获取默认值后呈现组件),而不是实现受控组件(更少的代码重写)但是我来看看这个
    LinkedStateMixin
    听起来很有趣。谢谢