[英]I can't have a beginning value for react-datepicker and still be able to change it from dropdown?
[英]I don't understand why I am getting the value of dob as an object when in use react-datepicker
當我控制台記錄 dob 的值時,它是 object 而不是字符串
首字母 state
const initialValues = {
registrationForm: {
dob: {
elementType: 'date',
elementConfig: {
name: 'dob',
required: true,
placeholderText: 'Date of birth'
},
value: null,
},
},
}
state *
const [values, setValues] = useState(initialValues);
更新對象
export const updateObject = (oldObject, updatedProperties) => {
return {
...oldObject,
...updatedProperties
};
};
處理更改處理程序
const handleChange = (event, inputIdentifier, config) => {
const updatedRegistrationForm = updateObject(values.registrationForm, {
[inputIdentifier]: updatedFormElement
});
setValues({registrationForm: updatedRegistrationForm);
};
處理提交*
const handleSubmit = (event) => {
event.preventDefault()
const formData = {};
for (let formElementIdentifier in values.registrationForm) {
formData[formElementIdentifier] = values.registrationForm[formElementIdentifier].value;
}
console.log(formData)
};
for (let key in values.registrationForm) {
formElementsArray.push({
id: key,
config: values.registrationForm[key]
});
}
形式
<form onSubmit={handleSubmit}>
{
formElementsArray.slice(sliceStart, sliceNumber).map(({config, id}) => {
return <Input
key={id}
elementType={config.elementType}
elementConfig={config.elementConfig}
value={config.value}
changed={(event) => handleChange(event, id)}/>
})
}
</form>
輸入
const Input = ({
elementType,
elementConfig,
value,
changed,
}) => {
let inputElement = null;
switch (elementType) {
case ('date'):
inputElement =
<DatePicker
id={id
className='mb-3 form-control'
{...elementConfig}
selected={value}
onChange={changed}/>
break;
}
return (
<>
{inputElement}
</>
);
};
export default Input;
當我控制台日志(Stringvale)時,我期待與此類似的東西
DOB:“2023-01-11T21:00:00.000Z”
但我得到了這個(一個對象)
任何幫助將不勝感激。
<DatePicker
id={id
className='mb-3 form-control'
{...elementConfig}
selected={value}
onChange={changed}/>
DatePicker 中的onChange
返回日期 object。您可以使用任何日期格式化程序將日期 object 轉換為所需格式。
更新changed
方法以接受日期 object,進行如下轉換。
const handleChange = (event, inputIdentifier, config) => {
const updatedRegistrationForm = updateObject(values.registrationForm,
{
[inputIdentifier]: updatedFormElement
});
if(inputIdentifier=="dob") {
updatedFormElement.value=formatDate(date); //create some function to do the date formatting
} else {
updatedFormElement.value = event.target.value // for example
// logic for non date inputs
}
setValues({registrationForm: updatedRegistrationForm);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.