【发布时间】:2018-04-09 05:30:56
【问题描述】:
我想要的只是一个简单的日期输入字段供用户选择日期。用户点击输入字段,打开日历(在本例中我们使用 Atlassian),用户选择日期,日历关闭,但输入字段保留所选日期。
现在我只有日历组件,我不知道如何与之交互或从中获取数据,也没有文档告诉我如何操作。 这大致是我当前的代码: 从'@atlaskit/calendar'导入日历
export default class DateInputForm {
render () {
return (
<div>
<form>
<Calendar
onSelect={()=> {console.warn('do something!!)}}
onChange={()=> {console.warn('do something!!)}}/>
</form>
</div>
)
}
}
编辑:正如向我建议的那样,我创建了带有输入字段和日历的组件,但是我仍然无法获取从日历中选择的值。
export default class DatePicker extends React.Component {
static propTypes ={
value: PropTypes.string
}
constructor (props) {
super(props)
this.state = {
calendarOpened: false
}
}
openCalendar () {
this.setState({calendarOpened: true})
}
render () {
const { value } = this.props
return (
<div>
<input
value={value || 'yyyy-mm-dd'}
onClick={() => this.openCalendar()} />
{this.state.calendarOpened
? <Calendar
onSelect={() => {console.warn('do something!!)}}
onChange={() => {console.warn('do something!!)}}/>
: null}
</div>
)
}
}
Edit2:我应该注意到,在 Calendar 组件的 onSelect 和 onChange 期间绝对没有发生任何事情。 此时我想要的只是访问我从日历组件中选择的任何日期
【问题讨论】:
-
关于如何做到这一点的一个可能的想法: 1. 制作你自己的反应组件,其中包括一个输入字段和这个日历组件。 2. 基于输入字段的点击,您应该显示日历组件。 3.在输入框的onBlur上,隐藏日历组件。
-
好的,所以我运行了它,但是我仍然不知道如何实际获取我从日历中选择的值。我将更新我的代码以显示更改。
-
我需要知道你是怎么称呼这个 DatePicker 的。您已经编辑了代码以使其成为组件,但您仍然如何从 HTML 或任何视图文件中调用 DatePicker 组件?另外,您的 openCalendar 函数在构造函数中没有 bind 方法,并且该组件也没有构造函数。
-
对不起,我剪掉了一些代码,没有让它变得很长。我认为构造函数只是隐含的,但它就在那里。 DatePicker 组件正在另一个组件中被调用,该组件将是一个表单(充满其他字段)。为什么 openCalendar 需要绑定?我目前正在使用箭头功能,就显示日历而言,它按预期工作。
标签: javascript reactjs datepicker calendar atlaskit