【发布时间】:2017-07-30 05:25:19
【问题描述】:
我有以下 React 组件:
import React from 'react'
import DatePicker from 'react-datepicker'
import moment from 'moment'
import 'react-datepicker/dist/react-datepicker.css'
class MyForm extends React.Component {
constructor(props) {
super(props)
this.state = {
//properties...
myDate : moment()
}
this.handleDateChange = this.handleDateChange.bind(this)
this.handleSubmit = this.handleSubmit.bind(this)
}
handleDateChange(date) {
this.setState({
myDate : date
})
}
handleSubmit(event) {
event.preventDefault()
// implementation...
}
render() {
return (
<form onSubmit={ this.handleSubmit }>
/* more components here... */
<DatePicker
dateFormat='DD/MM/YYYY' maxDate={ moment() }
fixedHeight peekNextMonth showMonthDropdown showYearDropdown dropdownMode='select'
selected={ this.state.myDate } onChange={ this.handleDateChange }
/>
</form>
)
}
}
export default MyForm
此组件显示在 react 路由器使用的链接下。在我的 App.js 中:
class App extends Component {
render() {
<Router>
<div className="App">
<Link to="/myForm">My Form</Link>
<Route path="/myForm" component={MyForm} />
</div>
</Router>
}
}
当我访问http://localhost:3000/myForm 时,日期选择器组件显示为文本框,没有动画,没有要显示的日期选择器,什么都没有。
然后,我尝试在 App.js 中仅使用 <DatePicker> 并像示例中一样工作:
class App extends Component {
constructor(props) {
super(props)
this.state = {
dateField : moment()
}
this.handleDateChange = this.handleDateChange.bind(this)
}
handleDateChange(date) {
this.setState({
dateField: date
})
}
render() {
<Router>
<div className="App">
<Link to="/myForm">My Form</Link>
<Route path="/myForm" component={MyForm} />
</div>
<DatePicker
dateFormat='DD/MM/YYYY' maxDate={ moment() }
fixedHeight peekNextMonth showMonthDropdown showYearDropdown dropdownMode='select'
selected={ this.state.dateField } onChange={ this.handleDateChange }
/>
</Router>
}
}
现在,我在http://localhost:3000/myForm 看到了这两个组件,不同之处在于MyForm 中的选择器仍然无法弹出,但App 中的选择器可以。
显示这些结果的图片。
现在使用我在 App.js 中添加的日期选择器:
【问题讨论】:
-
您确定将
DatePicker组件导入MyForm吗? -
是的。查看
MyForm中的import语句 -
糟糕,不知道我是怎么错过的。
-
控制台有输出吗?点击日期选择器时?
-
@JoseAPL 我没有任何输出。我已检查启用所有消息,但未显示警告或错误。
标签: javascript reactjs react-router react-datepicker