我得到了以下代码块:
const schema = useMemo(
() =>
yup.object().shape({
name: yup
.string()
.trim()
.required("Missing name")
.max(40, "Too long"),
template: yup
.string()
.trim()
.max(2000, "Too long")
.matches(/^https?:\/\//, "Invalid protocol")
.required("Missing template")
.test("variablesUsage", "Missing vars", function (
value
) {
return vars.some(v => value.includes(`{${v}}`))
}),
enabled: yup.boolean(),
}),
[message, vars]
)
问题在于,每次我在“名称”字段中键入内容时,都会在控制台中收到以下错误:“未捕获(承诺)TypeError:无法读取未定义的属性'length'”
如果我从“模板”中删除.test,效果很好,但是我找不到此错误的根本原因。
基本上,在.test中,有一些特定的关键字,“模板”中必须至少包含这些关键字中的1个
答案 0 :(得分:1)
错误似乎是由此行引起的
return vars.some(v => value.includes(`{${v}}`))
我添加了以下行:
if (value == null) {return false;}
它正在工作。