尝试使用eval()函数设置setState(React Native)

时间:2019-06-20 13:31:06

标签: react-native eval

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

1 个答案:

答案 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