我正在尝试将for循环中的多个状态设置为false或true,这取决于它们是否满足(if语句)要求。 for循环将遍历字符串数组,每个字符串代表一个状态。但是我似乎无法在this.setState函数中使用eval ...
我尝试过在线研究,但是没有一种解决方案可以解决我的问题或我要解决的问题。我什至尝试过eval(this.state.anything)= false,但仍然无法正常工作,并显示左手分配无效错误。
let businessState = [
"this.state.groupName",
"this.state.groupOwnerName",
"this.state.groupDesc",
"this.props.profile._id",
"this.state.businessName",
"this.state.businessDesc",
"this.state.businessRegNo",
"this.state.businessType",
"this.state.businessEmail",
"this.state.businessTel",
"this.state.businessWeChat",
"this.state.businessRegPhotoUri",
"this.state.businessSignPhotoUri"
];
var temp = ""
for (i = 0; i < businessState.length; i++) {
if (eval(businessState[i]) == ""){
temp = businessState[i]+ "Error"
this.setState({
eval(temp): true
})
}
}
从上面的代码中可以看到,我想评估状态,如果这个特定状态所保存的值是一个空字符串“”,我想设置该状态名称+“ Error”(例如,如果this.state.email为空字符串“”,我想将this.state.emailError设置为true。
答案 0 :(得分:0)
尝试使用this.setState({eval(temp): true})
而不是this.setState({[temp]: true})
。方括号将输出存储在temp中的字符串值作为setState中的变量名称。
This article gives a good explanation
This Stack Overflow question and the accepted answer also should help