首页 > 解决方案 > 尝试使用 eval() 函数设置状态(React Native)

问题描述

我正在尝试将 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
    })
  }
}

从上面的代码可以看出,我要评估状态,如果这个特定状态持有的值是一个空字符串“”,我想设置这个状态名称+“错误”(例如,如果this. state.email 是空字符串 "" 我想将 this.state.emailError 设置为 true。

标签: react-nativeeval

解决方案


而不是this.setState({eval(temp): true})尝试this.setState({[temp]: true})。括号会将存储在 temp 中的字符串值作为 setState 中的变量名输出。

这篇文章给出了很好的解释

这个 Stack Overflow 问题和接受的答案也应该有所帮助


推荐阅读