最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

reactjs - Missing equivalent for FormLabel in Chakra UI v3 - Stack Overflow

programmeradmin1浏览0评论

I've been migrating my projects from Chakra UI v2 to v3, following the Migration to v3 guide, but I'm unsure how to handle certain components that don't seem to have a direct equivalent in v3.

For example, FormLabel no longer appears to be importable:

export 'FormLabel' (imported as 'FormLabel') was not found in '@chakra-ui/react'

While some components have been repurposed (e.g., FormControl into Field), it's unclear what to use in this case.

Here's a snippet of my form where FormLabel is still causing issues:

<Field.Root isInvalid={formik.touched.email && !!formik.errors.email}>
  <FormLabel htmlFor="email">Email Address</FormLabel>
  <Input
    id="email"
    name="email"
    type="email"
    {...formik.getFieldProps("email")}
  />
  <Field.ErrorText>{formik.errors.email}</Field.ErrorText>
</Field.Root>

I've been migrating my projects from Chakra UI v2 to v3, following the Migration to v3 guide, but I'm unsure how to handle certain components that don't seem to have a direct equivalent in v3.

For example, FormLabel no longer appears to be importable:

export 'FormLabel' (imported as 'FormLabel') was not found in '@chakra-ui/react'

While some components have been repurposed (e.g., FormControl into Field), it's unclear what to use in this case.

Here's a snippet of my form where FormLabel is still causing issues:

<Field.Root isInvalid={formik.touched.email && !!formik.errors.email}>
  <FormLabel htmlFor="email">Email Address</FormLabel>
  <Input
    id="email"
    name="email"
    type="email"
    {...formik.getFieldProps("email")}
  />
  <Field.ErrorText>{formik.errors.email}</Field.ErrorText>
</Field.Root>
Share Improve this question edited Feb 17 at 16:03 Hamidreza 1,56513 silver badges20 bronze badges asked Feb 7 at 16:32 Guillaume GGuillaume G 135 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

You can replace FormLabel with <Field.Label>:

<Field.Root id="email" invalid={formik.touched.email && !!formik.errors.email}>
  <Field.Label>Email Address</Field.Label>
  <Input type="email" {...formik.getFieldProps('email')} />
  <Field.ErrorText>{formik.errors.email}</Field.ErrorText>
</Field.Root>

Two things to keep in mind:

  • You can pass id="email" to the field root, which will apply the ID to the field components. This allows you to safely remove htmlFor from the label and id from the input.
  • There's no need to pass name="email" to the Input, as it's already included in formik.getFieldProps("email").
发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>