【发布时间】:2021-12-12 20:08:54
【问题描述】:
我正在使用一个名为 react-semantic-ui-datepickers 的 React 模块,我相信它基于 react-datepicker。无论哪种方式,这更像是一个通用的 React 问题。我在同一个文件中有我的主类组件和日期选择器功能组件。日期选择器呈现并正常工作,但我无法弄清楚 如何 访问主类组件中日期选择器的实际值。
代码的简化版本如下所示,我只是在控制台中注销了一些变量的值。谁能给我一个关于从类组件访问所选日期选择器值的最佳方法的建议?
import Layout from '../../components/Layout';
import React, { Component, useState } from 'react';
import SemanticDatepicker from 'react-semantic-ui-datepickers';
import { Message, Form, Icon, Button, Input } from 'semantic-ui-react';
import 'react-semantic-ui-datepickers/dist/react-semantic-ui-datepickers.css';
class MyForm extends Component {
state = {
colour: 'Black',
description: ''
};
onSubmit = async (event) => {
event.preventDefault();
console.log(this.state.colour); // Shows current colour field value.
console.log(this.state.description); // Shows current description field value.
console.log(); // How do I access the selected value of the date picker field??
};
render() {
return (
<Layout>
<Form onSubmit={this.onSubmit}>
<Form.Field>
<Form.Group>
<Form.Field control='select' value={this.state.colour} onChange={event => this.setState({ colour: event.target.value })}>
<option value='Black'>Black</option>
<option value='Blue'>Blue</option>
<option value='Green'>Green</option>
<option value='Orange'>Orange</option>
</Form.Field>
<DatePicker />
</Form.Group>
<label>Description</label>
<Form.TextArea value={this.state.description} onChange={event => this.setState({ description: event.target.value })} />
</Form.Field>
<Button icon='add' labelPosition='left' content='Add' primary />
</Form>
</Layout>
);
}
}
const DatePicker = () => {
const [endDate, setNewDate] = useState(null);
const onChange = (event, data) => setNewDate(data.value);
return <SemanticDatepicker onChange={onChange} />;
};
export default MyForm;
【问题讨论】:
-
Datepicker 组件需要向您的主类组件报告其数据。然后将其作为道具传递给您的功能组件。
-
我在其他地方有一个类似问题的答案,How to set one component's state from another component in React。希望这会有所帮助。
标签: reactjs react-hooks next.js react-functional-component