我有一个变量(SeltedDay),它是从父组件传递的值(seltedDate.toString())

我将其设置为Reaction-Hook-Form字段的值

每次来自父组件的值更改时,它都会在屏幕上重新呈现,但在我提交表单时不会更改.

有没有我应该添加的onChange监听器?如果是这样的话,我如何确保在继承的值发生更改时表单值发生更改?

const DaySheet = ({ selectedDate }) => {
  const selectedDay = selectedDate.toDateString();

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

  const onSubmit = (data) => {
    console.log(data);
    try {
      const response = api.post('/sheets/save/', data);
      console.log(response);
    } catch (err) {
      console.error(err);
    }
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)} className="form2" key={1}>
      <input
        type="text"
        className="txtBox"
        value={selectedDay}
        readOnly={true}
        {...register('date')}
      />
    </form>
  );
};

export default DaySheet;

推荐答案

如果更改了selectedDate,则可以在useEffect中使用reset方法来重置日期值.还添加了selectedDate作为对useEffect的依赖.

你能试一下这个吗?

const DaySheet = ({ selectedDate }) => {
  const { register, handleSubmit, reset } = useForm();

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

  useEffect(() => {
    reset({ date: selectedDate.toDateString() });
  }, [selectedDate]);

  return (
    <form onSubmit={handleSubmit(onSubmit)} className="form2" key={1}>
      <input type="text" className="txtBox" {...register('date')} />
    </form>
  );
};

export default DaySheet;

Reactjs相关问答推荐

为什么我无法访问窗口事件处理程序中的状态?

ReactJs;Reaction-Hook-Form:仅当 Select 了特定 Select 列表选项时才显示文本输入

更改购物车中的产品数量后,PayPal Reaction/Next JS按钮未更新

react 路由GUGUD Use Effect无法通过useNavigate正常工作

React中的useEffect钩子

NextJS如何正确保存添加到购物车中的产品会话

获取未捕获的错误:Gatsby生产版本上的最小化react 错误#418

for each 子级加载父路由加载器

Reaction Google Maps API无法获取标题

在继承值更改时重置react 挂钩窗体字段值

如何在物料界面react 的多选菜单中设置最大 Select 数限制

如何动态地改变<; Select >;React和Tailwind元素?

太多的重新渲染 - React 中的无限循环.如何使用React.effect并使用fetch?

在 Next13 中将 props 传递给 onClick 从服务器到客户端组件

获取更多数据后更新 DOM,而不刷新 React.js 中的页面

如何处理页面加载时发生的 reactjs 错误?

React:如何设置光标 Select

我应该使用 useEffect 来为 React Native Reanimated 的 prop 值变化设置动画吗?

useState 在生命周期中的位置

在渲染不显示子元素之后,再次渲染时,子元素状态数据完全消失了.为什么会这样以及如何防止它发生?