我刚刚开始学习ReactJS,想用DatePicker编写一个简单的应用程序。我的想法是创建一个名为,
日期时间选择器
(
子组件
),和DatePicker,以及打电话
日期时间选择器
应用程序内。js(
父组件
)多次(至少指定开始和结束日期)。
我一直在把状态从子组件提升到父组件。
这是我的代码:
1) DateTimeSelector(子)组件
...
export default function DateTimeSelector(props) {
const [value, setValue] = React.useState(null);
function onChangeHandler(newValue) {
setValue(newValue);
console.log(newValue);
}
return (
<LocalizationProvider dateAdapter={AdapterDateFns}>
<DatePicker label={props.text}
value={value}
onChange={onChangeHandler}
renderInput={(params) => <TextField {...params} />}
/>
</LocalizationProvider>
);
}
2) 主(父)组件
在这个组件中,我希望在控制台中输出每个DateTimeSelector组件的值,例如,在中打印这些值。
现在在控制台中,我只看到我的
组件,但不是来自父级。
所以,我的问题是如何将日期值作为状态变量从日期选择器传递到父组件:startDate和endDate?
...
function App() {
const [startDate, setStartDate] = React.useState(null);
const [endDate, setEndDate] = React.useState(null);
function startDateChangeHandler(value) {
setStartDate(value);
console.log(startDate);
}
function endDateChangeHandler(value) {
setEndDate(value);
console.log(endDate);
}
return (
<Container>
<Grid container spacing={2}>
<Grid item xs={3}>
<div>
<DateTimeSelector text='Start Date'
value={startDate}
onChange={startDateChangeHandler} />
</div>
<div>
<DateTimeSelector text='End Date'
value={endDate}
onChange={endDateChangeHandler}/>
</div>
</Grid>
<Grid item xs={9}>
<div><p>Start Date: {startDate ? JSON.stringify(startDate) : null}</p>
<p>End Date: {endDate ? JSON.stringify(endDate) : null}</p>
</div>
</Grid>
</Grid>
</Container>
);
}
export default App;