react-hook-form。 useFieldArray Controller 必填,报错自动获取较多疑问记录

news2024/12/22 18:12:15
背景

动态多个数据Controller包裹时候,原生html标签input可以add时候自动获取焦点,聚焦到最近不符合要求的元素上面

  • matiral的TextField同样可以
  • 可是x-date-pickers/DatePicker不可以❌

是什么原因呢,内部提供foucs??属性才可以,还是?

暂时记录下,问题还未解决

input图:

input代码:

直接用controller的field,add时候就可以给最前面一个没有有效输入的input获取焦点

<input
key={field.id} // important to include key with field's id
{...field}
/>
TextField图:

TestField代码:

必须用register,controller的field无效(没有add自动获取最前面无效输入的表单)

<TextField
                                    {...field}
                                    label="Username"
                                    variant="outlined"
                                    {...register(`test.${index}.value`, {
                                        required: {
                                            value: true,
                                            message: "required"
                                        }
                                    })}
                                />
x-data-picker

用controller的fields或者regiter都无效

完整代码
import { useForm, Controller, useFieldArray } from "react-hook-form";
import { TextField } from "@mui/material";
import { useEffect } from "react"
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DatePicker } from '@mui/x-date-pickers/DatePicker';
function Form() {
    const { register, setFocus, control, handleSubmit, formState: { errors, isDirty }, formState } = useForm();
    const { fields, append, prepend, remove, swap, move, insert } = useFieldArray({
        control, // control props comes from useForm (optional: if you are using FormContext)
        name: "test", // unique name for your Field Array
        defaultValue: {
            test: [
                {
                    value: 100
                }
            ]
        }
    });

    const onSubmit = (data) => {
        console.log("data", data);
    };
    // console.log("errors", errors)
    useEffect(() => {
        // const firstError = Object.keys(errors).reduce((field, a) => {
        //     return !!errors[field] ? field : a;
        // }, null);
        // console.log("firstError", firstError)
        // if (firstError) {
        //     setFocus(firstError);
        // }
        // console.log("errors.test[0]", formState.errors)
        // if (errors.test && errors.test[0]?.value?.ref) {
        //     console.log(" errors.test[0].value.ref", errors.test[0].value.ref)
        //     //errors.test[0].value.ref.focus()
        //     setFocus(`test.${0}.value`)
        // }

    }, [errors, formState]);
    const appendfile = () => {
        append({
            value: ""
        })
    }

    return (
        <form onSubmit={handleSubmit(onSubmit)}>
            <p>{String(isDirty)}</p>
            {fields.map((field, index) => (
                <div key={field.id}>
                    {/* <input
                        key={field.id} // important to include key with field's id
                        {...register(`test.${index}.value`, {
                            required: {
                                value: true,
                                message: "required"
                            }
                        })}
                    /> */}

                    {/* <TextField
                        key={field.id} // important to include key with field's id
                        {...register(`test.${index}.value`, {
                            required: {
                                value: true,
                                message: "required"
                            }
                        })}
                    /> */}


                    <Controller
                        name={`test.${index}.value`}
                        control={control}
                        defaultValue=""
                        rules={{
                            required: {
                                value: true,
                                message: "required"
                            }
                        }}
                        errors={isDirty && errors.test && errors.test[index] && errors.test[index].value.message ? true : false}
                        render={({ field }) => {
                            console.log("field", field)
                            //     required: {
                            //         value: true,
                            //         message: "required"
                            //     }
                            // }))

                            return (
                                //一,可以自动获取焦点

                                // <TextField
                                //     {...field}
                                //     label="Username"
                                //     variant="outlined"
                                //     {...register(`test.${index}.value`, {
                                //         required: {
                                //             value: true,
                                //             message: "required"
                                //         }
                                //     })}
                                // />
                                //二,可以自动获取焦点
                                // <input
                                //     key={field.id} // important to include key with field's id
                                //     {...field}
                                // />
                                //三,可以自动获取焦点
                                // < LocalizationProvider dateAdapter={AdapterDayjs} >
                                //     <DatePicker
                                //         {...field}
                                //         {...register(`test.${index}.value`, {
                                //             required: {
                                //                 value: true,
                                //                 message: "required"
                                //             }
                                //         })}
                                //     />
                                // </LocalizationProvider>
                            )
                        }}
                    />


                </div>
            ))}
            <div>
                <button onClick={appendfile}>add</button>
            </div>

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

export default Form;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1162281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】医学影像信息管理系统源码

狭义的医学影像信息系统是指基于医学影像存储和通信系统的管理系统&#xff0c;从技术上解决了影像处理技术。临床信息系统是指支持医院医务人员临床活动&#xff0c;收集和处理患者临床医疗信息的信息管理系统。放射科信息系统是指放射科挂号、分诊、影像诊断报告、信息查询、…

在Qt中解决opencv的putText函数无法绘制中文的一种解决方法

文章目录 1.问题2.查阅资料3.解决办法 1.问题 在opencv中&#xff0c;假如直接使用putText绘制中文&#xff0c;会在图像上出现问号&#xff0c;如下图所示&#xff1a; 2.查阅资料 查了一些资料&#xff0c;说想要解决这个问题&#xff0c;需要用到freetype库或者用opencv…

ASO优化之Google Play评分评论的重要性

应用程序的成果不仅仅是拥有功能齐全且无错误的产品&#xff0c;评分和评论会影响谷歌应用商店的排名算法&#xff0c;好评和差评都会影响应用在商店中的排名&#xff0c;这是关于与用户建立信任的一个环节。 1、积极主动地管理评论。 定期监控评论、解决用户问题以及根据反馈…

python脚本-网页爬虫获取网页图片

python脚本-网页爬虫获取网页图片 代码 import requests import re import time url"http://10.9.47.154/python-spider/" # 爬取网站的url headers {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like …

阿里云双11特惠:云服务器1年99元,新老同享,续费同价!

2023年双11阿里云推出了金秋云创季活动&#xff0c;云服务器特惠&#xff0c;2核2G云服务器1年99元&#xff0c;新老同享&#xff0c;续费同价&#xff01; 活动地址&#xff1a; https://txy.ink/aliyun/ 活动详情&#xff1a; 阿里云面向个人开发者、学生、小微企业推出爆…

电压跟随器输入脚悬空引起的振荡

昨天在调试一个电路板的时候&#xff0c;发现进单片机AD脚的信号上面有个50Hz的波形&#xff0c;峰峰值还挺大&#xff0c;有几百毫伏。这种情况只有在输入端悬空的时候才出现&#xff1b;在输入端接了信号或者传感器的时候&#xff0c;就又正常了。 经过排查&#xff0c;发现…

92 数据流中的中位数

数据流中的中位数 题解1 小根堆大根堆另一种写法 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFi…

使用Java与Jsoup库构建有趣的爬虫项目

目录 一、网络爬虫的概念和应用 二、Jsoup库的功能和优势 三、使用Java与Jsoup库编写网络爬虫 四、网络爬虫的法律和道德问题 五、注意事项 六、总结 本文将深入探讨如何使用Java与Jsoup库构建一个实际且有趣的网络爬虫项目。我们将首先简要介绍网络爬虫的概念和应用&…

运动耳机哪个好?跑步耳机哪个好?运动耳机排行榜推荐

​运动时没有音乐的相伴真的很枯燥&#xff0c;当你打开音乐&#xff0c;世界就只剩下你和你的运动。运动的同时听歌还能让你完全沉浸在音乐中&#xff0c;享受运动的乐趣。无论是在激烈的比赛中&#xff0c;还是在轻松的晨跑中&#xff0c;它都能为你提供最佳的听觉体验。然而…

银河麒麟x86版、银河麒麟arm版操作系统编译zlmediakit

脚本 # 安装依赖 gcc-c.x86_64 这个不加的话会有问题 sudo yum -y install gcc gcc-c libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg git openssl-devel gcc-c.x86_64mkdir -p /home/zenglg cd /home/zenglg git clone --depth 1 https://gitee.com/xia-chu…

【23-24 秋学期】NNDL 作业6 卷积

卷积常用于特征提取 实验过程中注意认真体会“特征提取”&#xff0c;弄清楚为什么卷积能够提取特征。 一、概念 用自己的语言描述“卷积、卷积核、特征图、特征选择、步长、填充、感受野”。 二、探究不同卷积核的作用 卷积神经网络工作原理的直观理解_superdont的博客-CS…

DCN无线网络解决方案

一、概述 网络环境建设项目的目标是要建设一套安全可靠、性能领先的无线网络系统&#xff0c;能够良好支撑协同工作平台。经过几年的建设&#xff0c;网络建设已经由大规模建设阶段逐步转入“建设与服务并重&#xff0c;着力深化应用”的新阶段。在此阶段&#xff0c;网络工作…

基于Apache SeaTunnel 的数据精确一致性技术实践

引言 在分布式系统中&#xff0c;保障数据一致性是至关重要的任务之一。数据一致性是指分布式系统中的各个节点在进行数据更新时能够保持数据的准确性和完整性。然而&#xff0c;由于网络延迟、节点故障等原因&#xff0c;分布式系统中的数据一致性问题变得复杂而具有挑战性。…

行业揭秘:腾讯共享wifi码推广零加盟费是真的吗?

近年来&#xff0c;“共享经济”概念在商业领域取得了巨大成功。共享WiFi贴码成为共享经济的一种典型案例&#xff0c;被越来越多的人看作是一种低风险、高回报的投资方式。而在这个市场中&#xff0c;腾讯WiFi码推广以“零加盟费”而备受关注。本文将探讨腾讯WiFi码推广零加盟…

中国商界杂志中国商界杂志社中国商界编辑部2023年第10期目录查询

要闻 我国旅游市场步入理性繁荣阶段 赵熠如; 10-11 产业 老国货品牌再迎高光时刻 能否留住流量 涂瀚文; 12-13《中国商界》投稿&#xff1a;cnqikantg126.com 金融集聚有力 促进长三角城市高质量发展 刘盛坤; 14-17 辽宁农贸市场亟待优化升级路径在哪儿&#x…

SpringMVC Day 11 : 零 xml 配置

前言 欢迎来到《Spring MVC Day 11: 零XML配置》&#xff01;在之前的学习中&#xff0c;我们已经掌握了如何使用Spring MVC框架构建灵活、高效的Web应用程序。然而&#xff0c;我们可能还记得那些繁琐的XML配置文件&#xff0c;它们是我们在过去几天中使用的方式。 好消息是…

数据库概念和sql语句+库表管理操作+数据库用户管理

一、数据库的概念&#xff1a; 进入数据库的奇妙世界&#xff1a;mysql -u root -p123456 数据库是一个系统&#xff0c;是一个人机系统。由硬件、OS操作系统、数据库、DBMS和数据库的 用户共同组成。 用户时通过DBMS&#xff08;各种数据库的软件&#xff09;来对数据库进行…

京东数据平台:2023年9月京东智能家居行业数据分析

鲸参谋监测的京东平台9月份智能家居市场销售数据已出炉&#xff01; 9月份&#xff0c;智能家居市场销售额有小幅上涨。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年9月&#xff0c;京东平台智能家居的销量为37万&#xff0c;销售额将近8300万&#xff0c;同比增…

I.MX6U设置I2C复用和电气特性函数IOMUXC_SetPinMux和IOMUXC_SetPinConfig解析

1. 在【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 第627页中有提到bsp_ap3216c.c中IO初始化&#xff0c;配置 I2C IO属性函数如下&#xff1a; unsigned char ap3216c_init(void) { IOMUXC_SetPinMux(IOMUXC_UART4_TX_DATA_I2C1_SCL, 1); IOMUXC_SetPinMux(IOMUXC_UART4_…

找工作时如何快速了解一家公司?看他们招聘就知道

每一位求职者&#xff0c;都希望自己能够对感兴趣或者符合自己期望条件的公司有一个全面而深入的了解。如何在找工作或者找实习的时候&#xff0c;快速地了解一家公司&#xff0c;那就看看他们的招聘吧&#xff01; 1、从招聘信息洞察公司格局 有些公司的招聘信息中&#xf…