reactjs - 如何更新在 React 中的 Promise 生成的钩子中设置的值
问题描述
我有一个文本区域,我在其中验证每一行,以帮助我创建一个对象来存储和 id、名称和消息。id 等于您所在的行,消息存储验证消息,名称是输入的文本。
请原谅我,因为我不确定 Promise 是否会影响价值的结果,但我认为这是罪魁祸首。
我在一个验证器函数中有这个函数,它是 useEffect 中的一个 Promise:
const [messagesContainer, setMessagesContainer] = useState([]);
useEffect(() => {
var arrFromVariableTypeNameString = variableTypeName.split('\n');
function setMessage(data) {
let allMessages = [...messagesContainer]
for (let i = 0; i < arrFromVariableTypeNameString.length; i++) {
let match = allMessages.filter(item => item.id === i + 1);
if (match?.length) {
Object.assign(match[0], {
name: arrFromVariableTypeNameString[i],
message: data
})
} else {
allMessages.push({
id: i + 1,
name: arrFromVariableTypeNameString[i],
message: data
})
}
}
}
function validator(variableType) {
var data = {
variableType: variableType,
}
var rules = {
variableType: "regex:^[a-zA-Z0-9_ ]+$|min:3|max:20",
}
var messages = {
min: `Enter at least three characters.`,
max: `Don't exceed more than twenty characters.`,
regex: `No special characters (but spaces) allowed.`
}
validate(data, rules, messages)
.then(success => {
console.log('Variable Type Entered correctly.', success)
setMessage('');
return
})
.catch(error => {
console.log('error', error[0])
setMessage(error[0].message);
return
});
}
}, [variableTypeName]);
所以踢球者是当下面的 name 属性立即更新时,错误消息没有。它只是级联到每个消息属性?
每条线应该发生什么应该将其验证与其他线分开。
先感谢您!
解决方案
推荐阅读
- python - python 网页抓取 - 高尔夫差点
- scala - Dataframe: how to groupBy/count then order by count in Scala
- spring-boot - Spring安全许可所有索引
- java - CXF servlet 的目的是什么
- circleci - 我可以在 CircleCI 2.0 中按照另一个工作的步骤运行工作吗?
- python - Python 无法通过 EC2 实例访问 S3 存储桶
- wordpress - 为与列小部件相同的新结构创建 elementor 插件扩展
- javascript - Yii2如何将php数组数据传递到highcharts
- google-bigquery - BigQuery 作业按标签过滤
- excel - 如何应用 For 循环使用 VBA 创建多个 PIVOT 表