如何使用setValue for useForm钩子为编辑页面创建表单(REACT,javaScript)

zkure5ic  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(90)

嗨,我已经创建了图书管理系统的组件,如Displaybooks,Addbooks,这是工作正常,我创建了以下组件编辑现有图书:

import React, { useContext, useState, useEffect } from "react";
import { useForm } from "react-hook-form";
import { useParams } from "react-router";
import { Bookcontext } from "../bookcontext";
import { useNavigate } from "react-router-dom";
const Editbook = () => {
  const {
    register,
    handleSubmit,
    setValue,
    formState: { errors },
  } = useForm();
  const { ISBN } = useParams();
  const books = useContext(Bookcontext);
  const navigate = useNavigate();
  const [book, setBook] = useState({});

  useEffect(() => {
    const book1 = books.find((b) => b.ISBN == ISBN);
    setBook(book1);
  }, []);

  const onSubmit = (data) => {
    console.log(data);
    const index = books.indexOf(books.find((b) => b.ISBN === ISBN));
    books.splice(index, 1, data);
    navigate("/display");
  };
  return (
    <div>
      <form onSubmit={handleSubmit(onSubmit)}>
        <input
          type="number"
          {...register(
            "ISBN",
            /*('ISBN', { ISBN: book.ISBN}),*/ { required: true }
          )}
        />

        <input type="text" {...register("title", { required: true })} />

        <input type="text" {...register("author", { required: true })} />

        <input type="submit" />
      </form>
    </div>
  );
};

export default Editbook;

这也是工作,书籍得到编辑,但我想在输入标签中设置当前书籍的值与('ISBN', { ISBN: book.ISBN}),,但这是不工作的,所以我现在评论它。
您能否解释一下如何对所有3个输入执行此操作?
我希望在我可以编辑和提交的文本区域中显示当前账面价值:

xdnvmnnf

xdnvmnnf1#

您可以像这样将该值设置为默认值。

<input type="text" defaultValue={book.ISBN} {...register("ISBN", { required: true })} />

相关问题