结合 es6 文字模板处理 React-Hook-Form 错误对象的问题

Issue to handle React-Hook-Form errors object in combination with es6 literal templates

下面的代码显示了一个 table,其中我有一系列基于以下数组的行和列:

const weekDays = [
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday",
  "Sunday",
];

const timeWindows = [
  "openOrder",
  "closeOrder",
  "openPickupOrder",
  "closePickupOrder",
];

基于上面的值,我还使用es6字面量模板动态生成了字段名。

当我尝试将 react-form-hook errors 对象与动态生成的名称(es6 文字模板)结合使用时,问题就开始了。错误不起作用。

     <table>
        <tbody>
          {weekDays.map((day) => (
            <tr key={day}>
              <td>{day}</td>
              <td>
                <ToggleButton label={day} statusRow={statusRow} />
              </td>
              {timeWindows.map((window) => (
                <td key={`${day}${window}`}>
                  <input
                    {...register(`${window}${day}`, {
                      required: true,
                    })}
                    type="time"
                  />
                  {`${errors}.${window}${day}` && ( <---- ISSUE IS HERE
                    <span>This field is required</span>
                  )}
                </td>
              ))}
            </tr>
          ))}
        </tbody>
      </table>

我正在尝试将 es6 文字模板与对象结合起来,并在 return 中包含以下内容:

errors.openOrderMonday

如果我 console.log(${errors}) 我得到 [object 对象],如果我尝试 console.log(errors.${window}${day }`), 是的,它 return 是完整的字符串(上面),但它不是作为对象读取的。

非常感谢任何帮助。

谢谢 乔

更新:

我在这里遇到了 2 个问题:

  • 我无法使用带有对象的文字模板来显示错误
  • 根据其他开发者建议的解决方案,errors 对象返回未定义

问题原因:

  • 问题 1 是由代码结构引起的
  • 问题 2 是由于在组件及其父组件中,我正在初始化 errorsregister。实际上我做了两次。

修复:

  • 问题 1:Pranay Nailwal 的初步建议解决了问题 errors[`${window}${day}`]
  • 问题 2:我没有将 errorsregister 初始化两次,而是从父组件 props 传递它们

我从我的子组件中删除了这个:

const {
    register,
    formState: { errors },
  } = useForm();

我用过这个:

const { register, errors } = props;

感谢大家的帮助。