如何向JS对象内的字符串传参?表单校验错误渲染异常求助
问题分析与解决方案
你的问题出在两个核心点:
- 未正确引用
dictionary.js中的错误字符串,且误用了逗号运算符,导致最终赋值给errors[key.field]的是{max}对象,所以页面显示[Object object]。 - 没有对错误字符串里的
{{max}}占位符做动态替换,无法插入实际的最大长度值。
具体解决步骤:
导入字典对象
先在validator.js中引入dictionary.js里的eng对象(根据你的项目模块系统调整导入方式):// CommonJS 格式 const { eng } = require('./dictionary.js'); // ESModule 格式 // import { eng } from './dictionary.js';替换占位符生成正确错误信息
修改validate函数里的错误赋值逻辑,用字符串替换把{{max}}替换成实际的最大长度值:const validate = (values) => { const errors = {}; values.forEach(key => { const value = key.value; const max = key.max; if (value.length > max) { // 直接替换单个占位符 errors[key.field] = eng.errors.invalidLength.replace('{{max}}', max); } }); return errors; }
进阶优化(支持多占位符场景)
如果后续错误字符串需要多个动态参数,可以写一个通用的占位符替换函数,适配更复杂的情况:
const replacePlaceholders = (template, params) => { return template.replace(/{{(\w+)}}/g, (_, placeholderKey) => { return params[placeholderKey] ?? `{{${placeholderKey}}}`; }); }; // 在validate函数中调用 if (value.length > max) { errors[key.field] = replacePlaceholders(eng.errors.invalidLength, { max }); }
修改完成后,错误提示会正确显示为Entered value is too long. Max value is X.(X为实际的max数值),不会再出现[Object object]的问题。
内容的提问来源于stack exchange,提问作者willberthos
相关产品推荐
相关产品推荐

