Попытка setState с помощью функции eval () (React Native) - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь установить для нескольких состояний в цикле for значение false или true в зависимости от того, соответствуют ли они требованию (оператора if).Цикл for будет проходить через массив строк, каждая строка представляет состояние.Но я не могу использовать eval в функции this.setState ...

Я пытался исследовать онлайн, но ни одно из решений не соответствует моей проблеме или тому, что я пытаюсь решить.Я даже пытался 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.

1 Ответ

0 голосов
/ 21 июня 2019

Вместо this.setState({eval(temp): true}) попробуйте this.setState({[temp]: true}). В скобках будет выведено строковое значение, сохраненное в temp, как имя переменной в setState.

Эта статья дает хорошее объяснение

Этот вопрос переполнения стека и принятый ответ также должны помочь

...