gpt4 book ai didi

javascript - 在 react-hook-form 中设置 DatePicker 的值(来自 antd)

转载 作者:行者123 更新时间:2023-11-30 19:07:40 28 4
gpt4 key购买 nike

我正在尝试弄清楚如何将来自 antd 的 DatePicker 与 react-hook-form 一起使用。

目前,我的尝试是:

import React, { useState, useEffect } from "react";
import ReactDOM from "react-dom";
import useForm from "react-hook-form";
import { withRouter } from "react-router-dom";
import { useStateMachine } from "little-state-machine";
import updateAction from "./updateAction";
import { Input as InputField, Form, Button, DatePicker, Divider, Layout, Typography, Skeleton, Switch, Card, Icon, Avatar } from 'antd';
import Select from "react-select";


const { Content } = Layout
const { Text, Paragraph } = Typography;
const { Meta } = Card;
const { MonthPicker, RangePicker, WeekPicker } = DatePicker;



const Team = props => {
const { register, handleSubmit, setValue, errors } = useForm();
const [ dueDate, setDate ] = useState(new Date());
const [indexes, setIndexes] = React.useState([]);
const [counter, setCounter] = React.useState(0);
const { action } = useStateMachine(updateAction);
const onSubit = data => {
action(data);
props.history.push("./ProposalBudget");
};


// const handleChange = dueDate => setDate(date);
const handleChange = (e) => {
setValue("dueDate", e.target.value);
}


const onSubmit = data => {
console.log(data);
};

const addMilestone = () => {
setIndexes(prevIndexes => [...prevIndexes, counter]);
setCounter(prevCounter => prevCounter + 1);
};

const removeMilestone = index => () => {
setIndexes(prevIndexes => [...prevIndexes.filter(item => item !== index)]);
};

const clearMilestones = () => {
setIndexes([]);
};

useEffect(() => {
register({ name: dueDate }); // custom register antd input
}, [register]);

注意:我也试过 name: {${fieldName}.dueDate - 这也不起作用。

  return (
<div>
<HeaderBranding />
<Content
style={{
background: '#fff',
padding: 24,
margin: "auto",
minHeight: 280,
width: '70%'
}}
>
<form onSubmit={handleSubmit(onSubit)}>

{indexes.map(index => {
const fieldName = `milestones[${index}]`;
return (
<fieldset name={fieldName} key={fieldName}>
<label>
Title:
<input
type="text"
name={`${fieldName}.title`}
ref={register}
/>
</label>

<label>
Description:
<textarea
rows={12}
name={`${fieldName}.description`}
ref={register}
/>
</label>
<label>When do you expect to complete this milestone? <br />


<DatePicker
selected={ dueDate }
// ref={register}
InputField name={`${fieldName}.dueDate`}
onChange={handleChange(index)}

//onChange={ handleChange }
>
<input
type="date"
name={`${fieldName}.dueDate`}
inputRef={register}
/>
</DatePicker>

</label>

<Button type="danger" style={{ marginBottom: '20px', float: 'right'}} onClick={removeMilestone(index)}>
Remove this Milestone
</Button>
</fieldset>
);
})}

<Button type="primary" style={{ marginBottom: '20px'}} onClick={addMilestone}>
Add a Milestone
</Button>
<br />
<Button type="button" style={{ marginBottom: '20px'}} onClick={clearMilestones}>
Clear Milestones
</Button>
<input type="submit" value="next - budget" />
</form>
</Content>

</div>
);
};

export default withRouter(Team);

这会产生一个错误:TypeError: Cannot read property 'value' of undefined

setValue 在 handleChange 中定义。

我不清楚要让这个日期选择器发挥作用还需要采取哪些步骤。我需要单独的选择功能吗?

有没有人知道如何插入这个日期选择器?

我也试过:

const handleChange = (e) => {
setValue("dueDate", e.target.Date);
}

我试过:

const handleChange = (e) => {
setValue("dueDate", e.target.date);
}

但每一代人都犯同样的错误

最佳答案

我已经构建了一个包装器组件来更轻松地与外部控制组件一起工作: https://github.com/react-hook-form/react-hook-form-input

import React from 'react';
import useForm from 'react-hook-form';
import { RHFInput } from 'react-hook-form-input';
import Select from 'react-select';

const options = [
{ value: 'chocolate', label: 'Chocolate' },
{ value: 'strawberry', label: 'Strawberry' },
{ value: 'vanilla', label: 'Vanilla' },
];

function App() {
const { handleSubmit, register, setValue, reset } = useForm();

return (
<form onSubmit={handleSubmit(data => console.log(data))}>
<RHFInput
as={<Select options={options} />}
rules={{ required: true }}
name="reactSelect"
register={register}
setValue={setValue}
/>
<button
type="button"
onClick={() => {
reset({
reactSelect: '',
});
}}
>
Reset Form
</button>
<button>submit</button>
</form>
);
}

尝试一下,让我知道它是否让您的 AntD 生活更轻松。

关于javascript - 在 react-hook-form 中设置 DatePicker 的值(来自 antd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58828237/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com