微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何访问 Yup 模式中的上下文

如何解决如何访问 Yup 模式中的上下文

我使用 react-hook-formYup 库来管理我的应用程序中的表单。

我正在尝试根据我的组件状态创建动态 Yup 模式。

例如:

import React,{ useContext } from "react";
import { useForm } from "react-hook-form";
import { useHistory } from "react-router-dom";
import { FirstFormContext } from "../context/FirstFormContext";
import { SecondFormContext } from "../context/SecondFormContext";
import { yupResolver } from "@hookform/resolvers/yup";
import * as yup from "yup";

const schema = yup.object().shape({
  email: yup.string().email().min(2),// <-- Here I want to access the value
  address: yup.string().min(2).max(20)
});

const SecondForm = () => {
  const { secondFormData,setSecondFormData } = useContext(SecondFormContext);
  const { firstFormData } = useContext(FirstFormContext);
  const { register,handleSubmit } = useForm({
    resolver: yupResolver(schema),context: firstFormData.type // <---- Passing the variable
  });
  const history = useHistory();

  const onSubmit = (data) => {
    setSecondFormData(data);
    history.push("/end-page");
  };

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <button
        style={{ display: "block",marginBottom: "20px" }}
        onClick={() => history.push("/")}
      >
        Go back
      </button>
      {firstFormData.type === "one" ? (
        <input
          defaultValue={secondFormData.email}
          placeholder="email"
          {...register("email",{ required: true })}
        />
      ) : firstFormData.type === "two" ? (
        <input
          defaultValue={secondFormData.address}
          placeholder="address"
          {...register("address",{ required: true })}
        />
      ) : null}

      <button type="submit" style={{ display: "block",marginTop: "20px" }}>
        Next
      </button>
    </form>
  );
};

export default SecondForm;

如您所见,在我的组件中,我将上下文传递给 useForm 钩子,并且我想在 SecondForm 组件上方的 Yup 架构中访问它。

我怎样才能实现它?

谢谢。

解决方法

我是这样解决的:

@client.command() @commands.has_permissions(kick_members=True) async def mute(ctx,member: discord.Member): role = discord.utils.get(ctx.guild.roles,name="Muted") guild = ctx.guild if role not in guild.roles: perms = discord.Permissions(send_messages=False,speak=False) await guild.create_role(name="Muted",permissions=perms) await member.add_roles(role) await ctx.send("Successfully created Muted role and assigned it to mentioned user.") else: await member.add_roles(role) await ctx.send(f"Successfully muted ({member})") @mute.error async def mute_error(ctx,error): if isinstance(error,commands.MissingRole): await ctx.send("You don't have the 'staff' role") @mute.error async def mute_error(ctx,commands.BadArgument): await ctx.send("That is not a valid member") 钩子内

useForm

在我的 const { register,handleSubmit } = useForm({ resolver: yupResolver(schema),context: { type: firstFormData.type } }); 中:

schema

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?