小编gee*_*rry的帖子

使用 react-select 和 react-hook-form 返回正确的值

我正在使用 react-hook-forms Controller api 围绕来自 react-select 的 AsyncSelect 加载选项,因为用户从外部 API 键入。一切正常,除了返回的值作为字符串"[object Object]"而不是对象的 fullName 属性返回。

我的组件:

           <Controller
            control={control}
            name="businessCategory"
            as={
              <AsyncSelect
                className="react-select-container"
                loadOptions={v => handleAutocompleteLookup(v)}
                onChange={handleCategoryInputChange}
                getOptionLabel={option => option.name}
                getOptionValue={option => option.fullName}
              />
            }
          />
Run Code Online (Sandbox Code Playgroud)

我的 handleChange 函数。SetValue 来自 react-hook-form:

  const handleCategoryInputChange = newValue => {
    return setValue('businessCategory', newValue, true);
  };
Run Code Online (Sandbox Code Playgroud)

我的任何数据都是具有以下形状的对象数组:

{
  fullName: "DJ service"
  id: "gcid:dj"
  name: "DJ service"
  publisher: "GMB"
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的线索将不胜感激,谢谢!

reactjs react-select react-hook-form

9
推荐指数
6
解决办法
1万
查看次数

如何使用 Formik 发送复选框的值

我正在制作一个 formik 表单,除了我的复选框字段之外,每个字段都正确设置和发送值。我真的找不到关于它的好的文档,所以想知道是否有人可以帮助我。

我对 formik 函数的价值观的支持:

  mapPropsToValues: props => ({
    firstName: props.firstName || '',
    lastName: props.lastName || '',
    businessName: props.businessName || '',
    email: props.email || '',
    phone: props.phone || '',
    zipCode: props.zipCode || '',
    yearsInBusiness: props.yearsInBusiness || '',
    callBackTime: props.callBackTime || '',
    paymentServices: [],
    paymentProcessing: props.paymentProcessing || ''
  }),
Run Code Online (Sandbox Code Playgroud)

还有我的输入框。

 <CheckboxField
   type="checkbox"
   name="paymentProcessing"
   value={values.paymentProcessing}
   label="Payment Processing Equipment"
  />
Run Code Online (Sandbox Code Playgroud)

如果选中的话,我基本上需要复选框字段的值等于标签

checkbox reactjs formik

5
推荐指数
1
解决办法
7767
查看次数

当满足最少条件时如何使用 yup 验证密码

我正在尝试使用 yup 进行密码验证,其中至少满足 4 个密码条件中的 3 个。我很难找到现有的方法来做到这一点。

\n

我的要求是这样的:

\n
\n

至少 8 个字符 必须使用以下四种字符类型中至少三种\n的字符: \xe2\x80\xa2 英文字母大写\n字母 (AZ) \xe2\x80\xa2 英文字母小写字母 (az) \xe2\ x80\xa2 数字\n(0-9) \xe2\x80\xa2 非字母数字符号(例如 !、#、$、%)

\n
\n

我的验证(使用react-hook-form)是这样的:

\n
newPassword: yup\n.string()\n.required('Please enter a password')\n.min(8, 'Password too short')\n.matches(/^(?=.*[a-z])/, 'Must contain at least one lowercase character')\n.matches(/^(?=.*[A-Z])/, 'Must contain at least one uppercase character')\n.matches(/^(?=.*[0-9])/, 'Must contain at least one number')\n.matches(/^(?=.*[!@#%&])/, 'Must contain at least one special character'),\n
Run Code Online (Sandbox Code Playgroud)\n

问题是,这当然需要所有 4 个条件,而实际上只需要 4 个条件中的至少 3 个。任何解决此问题的帮助将不胜感激!谢谢

\n

validation reactjs yup react-hook-form

4
推荐指数
1
解决办法
4948
查看次数

如何将 JSON 数据中的图像导入 create-react-app

所以我有 JSON 数据,其中包括位于我的公共文件夹 (/public/images) 中的图像的路径。像这样,

const data = [
{
    "key": 1,
    "name": "Goal Squad",
    "techs": ["React & Redux", "Express", "MySQL"],
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
    "image": "../public/images/test.jpg"
},
{
    "key": 2,
    "name": "WesterosCraft",
    "techs": ["React & Redux", "Express", "MySQL"],
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et",
    "image": "../public/images/test.jpg"
},
Run Code Online (Sandbox Code Playgroud)

根据阅读其他一些类似情况,这就是我在我的组件中尝试过的;

class Card extends Component  {

render() { …
Run Code Online (Sandbox Code Playgroud)

javascript image reactjs create-react-app

3
推荐指数
1
解决办法
7080
查看次数

使用 Formik 未成功触发 handleSubmit 函数

我正在使用 Formik + Yup 构建一个表单,但似乎无法通过一个基本问题,我觉得我错过了一些明显的东西。我的handleSubmit 函数不会在单击按钮时触发 - 即使是像控制台日志这样简单的东西。如果我向 onClick 按钮处理程序添加一个纯函数,它会触发,但 Formik 似乎没有传递使用 withFormik HOC 构造的handleSubmit。

\n\n

我尝试将处理程序添加到 Form 组件,但在那里也不起作用。

\n\n
const formikEnhancer = withFormik({\n  mapPropsToValues: props => ({\n    firstName: props.firstName || \'\',\n    ...\n  }),\n  validationSchema: yup.object().shape({\n    firstName: yup.string().required(\'Please enter your first name\'),\n   ...\n  }),\n  handleSubmit: (values, formikBag) => {\n    console.log(\'test\');\n    }\n  },\n});\n\nconst BusinessFundingForm = ({\n  values,\n  isSubmitting,\n  errors,\n  handleBlur,\n  handleChange,\n  handleSubmit,\n  touched,\n  data,\n}) => {\n\n  return (\n        <Form className="form" id="form-id">\n          <Row>\n            <Col xs={12} sm={6}>\n              <InputField\n                id="first-name"\n                type="text"\n                name="firstName"\n                value={values.firstName}\n                onChange={handleChange}\n …
Run Code Online (Sandbox Code Playgroud)

reactjs yup formik

1
推荐指数
1
解决办法
1324
查看次数