ipe*_*n67 14 datepicker reactjs
我已经使用 react-datepicker 库设置了一个 DatePicker 组件,并将使用今天的日期以 MM-DD-YYYY 格式传递给它一个初始日期值。
但是,当我在 React 中加载页面时,我得到
范围错误:无效的时间值
const AuthForm = ({ buttonText, formType, onAuth, history, ...props }) => {
const startDate = new Date().toLocaleDateString();
const initialStateSignup = {
email : "",
password : "",
firstName: "",
lastName: "",
gender: "",
dob: startDate
};
const [state , setState] = useState(formType === 'login' ? initialStateLogin : initialStateSignup);
const handleChange = e => {
const {name , value} = e.target;
setState( prevState => ({
...prevState,
[name] : value
}))
}
...
return (
<DatePicker
placeholderText="Date of Birth"
selected={state.dob}
onChange={handleChange}
/>
)
Run Code Online (Sandbox Code Playgroud)
这个错误来自哪里?我控制台记录了 startDate,它对我来说看起来有效,这是我在其他线程中看到的用于生成开始日期的方法。
Vla*_*ado 12
根据这篇文章https://github.com/Hacker0x01/react-datepicker/issues/1752,您很可能使用旧版本的 datepicker,这也可能与您的 React 环境不完全一致。
所以检查你的 react-datepicker 版本,如果需要升级到 2+,并使用以下语法:
const selected = moment(isoDateStr).toDate();
Run Code Online (Sandbox Code Playgroud)
这是因为版本 2 之前的 react-datepicker 直接使用 moment 对象日期类型,而版本 2+ 则使用 javascript 日期类型。
只需使用您想要的格式传递给您的 DatePicker 组件dateFormat="MM-DD-YYYY"道具即可。
https://reactdatepicker.com/#example-7
<DatePicker
dateFormat="MM-dd-yyyy"
selected={this.state.startDate}
onChange={this.handleChange}
/>
Run Code Online (Sandbox Code Playgroud)
PD 您希望使用useReducer而不是useState在您的状态是对象的情况下。
小智 5
使用新日期(this.state.StartDate)
<DatePicker
dateFormat="MM-dd-yyyy"
selected={new Date(this.state.startDate)}
onChange={this.handleChange}
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19429 次 |
| 最近记录: |