Tom*_*Tom 4 reactjs material-ui react-hooks
我正在尝试使用 Material-ui-pickers 的日期选择器,其中示例演示是使用State Hooks编写的。我想获取日期值作为父组件的回调。这是子组件:
import React, { Component } from 'react';
import { Fragment, useState } from "react";
import { DatePicker, InlineDatePicker } from "material-ui-pickers";
function YearMonthPicker(props) {
const [selectedDate, handleDateChange] = useState("2013-01-01");
return (
<div className="picker">
<DatePicker
openTo="year"
views={["year", "month"]}
label="Year and Month"
helperText="With min and max"
minDate={new Date("2011-01-01")}
maxDate={new Date("2018-12-01")}
value={selectedDate}
onChange={handleDateChange}
/>
</div>
);
}
export default YearMonthPicker;
Run Code Online (Sandbox Code Playgroud)
在“onChange”上,该函数修改其“selectedDate”状态。
在我的父组件中,我定义了该函数:
handleChangeTo = e => {
this.setState({ dateTo: e.target.value });
};
Run Code Online (Sandbox Code Playgroud)
并且,在渲染方法中,我尝试这样调用它:
<YearMonthPicker handleChangeTo={this.handleChangeTo} />
Run Code Online (Sandbox Code Playgroud)
据我了解,如果我将“onChange”的功能更改为 props.handleChangeTo,那么子组件的状态将不会在更改时更新。将日期传递给父组件的正确方法是什么?
您可以创建一个从 props调用和 的新函数,而不是handleDataChange直接用作处理程序。然后将直接获取值,而不是事件。onChangehandleDataChangehandleChangeTohandleChangeTo
例子
function YearMonthPicker({ handleChangeTo }) {
const [selectedDate, handleDateChange] = useState("2013-01-01");
return (
<div className="picker">
<DatePicker
openTo="year"
views={["year", "month"]}
label="Year and Month"
helperText="With min and max"
minDate={new Date("2011-01-01")}
maxDate={new Date("2018-12-01")}
value={selectedDate}
onChange={val => {
handleDateChange(val);
handleChangeTo(val);
}}
/>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以将此状态保留在父组件中,并将其作为道具传递给子组件YearMonthPicker,而在子组件中根本不具有任何组件状态。
| 归档时间: |
|
| 查看次数: |
10731 次 |
| 最近记录: |