【问题标题】:React DatePicker get state from parent classReact DatePicker 从父类获取状态
【发布时间】:2020-08-26 05:55:37
【问题描述】:

在我的 form.js 中,我试图从日期选择器中选择日期并更新 form.js 中的状态

Form.js

export default class form extends Component {
  constructor(props) {
      super(props);
      this.state = {
        Date: new Date(),
      };

      this.handleChange = this.handleChange.bind(this);
      this.handleSubmit = this.handleSubmit.bind(this);
    }
    handleChange(event) {
      if(event.target.id === "delivery_date"){
        this.setState({Date: event.target.value});
     }

    render(){
   .....
    <CustomDatePicker id="delivery_date" value={this.state.selectedDate}   onChange={this.handleChange}></CustomDatePicker>
.....
    }
}

CustomDatePicker.js

export default function CustomDatePicker() {
    const [selectedDate, setDate] = useState(new Date());
    const isWeekday = date => {
      const day = getDay(date);
      return day !== 0 && day !== 6;
    };
    return (
        console.log({selectedDate}),
        <DatePicker 
          selected={selectedDate}
          onChange={date => setDate(date)}
          minDate={new Date()}
          maxDate={addDays(new Date(), 4)}
          // excludeDates={[new Date(), subDays(new Date(), 1)]} to exclude PB holiday
          filterDate={isWeekday}
          placeholderText="Select a date">
        </DatePicker>
    )
  }
}

我可以从 console.log 打印 customDatePicker.js 中的 selectedDaate,但我无法获取 form.js 中的值

【问题讨论】:

  • 在form.js中取不到值是什么意思?表单是将它发送给选择器的那个
  • 如何从 Form.js 中的 CustomDatePicker.js 中获取 selectedDate?

标签: javascript html reactjs forms react-datepicker


【解决方案1】:

你需要让CustomDatePicker调用props上的onChange方法,这样当日期变化时,Form.js方法就会被调用

你试过了吗?

   <DatePicker 
      selected={selectedDate}
      onChange={date => {
         this.props.onChange(date)
         setDate(date)
      }
      minDate={new Date()}
      maxDate={addDays(new Date(), 4)}
      // excludeDates={[new Date(), subDays(new Date(), 1)]} to exclude PB holiday
      filterDate={isWeekday}
      placeholderText="Select a date">
    </DatePicker>

我现在无法测试代码,但这应该让您知道该怎么做

【讨论】:

  • 我有一个错误,这是未定义的。我认为是因为我正在使用 datepicker 中的功能组件
  • 需要将props传递给功能组件:medium.com/@PhilipAndrews/…
猜你喜欢
  • 1970-01-01
  • 2020-08-19
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2021-10-28
相关资源
最近更新 更多