我有一个模态,我想从后端控制器向用户显示验证。errors 是一个带有字符串键和数组值的字典。我正在使用 React 并将验证错误设置为状态。我可以将这些错误记录到我的控制台。但是我无法让它们显示在 UI 上。这就是我使用状态的方式:
const [errors, setErrors] = useState<string[]>([]);
当我这样做时
console.log(Object.entries(errors).map(([key, value]) => value));
如何进一步迭代以在 UI 中分别显示每个错误?在我的模态中,我尝试做
<div className="modal">
{
errors.length > 0 && (
Object.entries(errors).map(([key, value]) => { return <div>{value}</div>})
)
}
<label>First Name: </label>
但这不会显示任何内容。我想我需要单独拉出每个字符串并将其显示在一个段落中,但我不知道该怎么做。
根据 的输出console.log(Object.entries(errors).map(([key, value]) => value));
,您的errors
变量如下所示:
const errors = [
["required something", "invalid"],
["some other stuff", "required"]
];
或者像这样:
const errors = {
error1: ["required something", "invalid"],
error2: ["some other stuff", "required"]
};
您的默认值很[]
容易让人相信是前者,但您的使用Object.entries
暗示了后者。
它之所以重要,主要是因为这种情况: errors.length > 0
所以我将解决这两种情况。假设您的errors
变量是前一种情况,即数组。然后渲染它,你只需这样做:
{errors.length > 0 &&
errors.map(([key, value]) => {
return <div key={key}>{key}</div>;
})}
但是,如果errors
变量是后一种情况下的对象,那么您将像这样渲染它:
{Object.entries(errors).length > 0 &&
Object.entries(errors).map(([key, value]) => {
return <div key={value[0]}>{value[0]}</div>;
})}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句