Как я могу написать эту функцию с ifs, чтобы иметь соответствующие операторы else

Пожалуйста, как я могу написать эту функцию с Ifs, чтобы иметь соответствующий оператор else.

Я пытаюсь добавить оператор else для каждого оператора if

Пожалуйста, посмотрите мой код ниже.

validate = (lname, fname, email, eid) => {
    if (lname) {
        this.setState({
            validationState: {
                ...this.state.validationState,
                lastname: false,
            },
        });
    }
    if (fname) {
        this.setState({
            validationState: {
                ...this.state.validationState,
                firstname: false,
            },
        });
    }
    if (helpers.isEmail(email)) {
        this.setState({
            validationState: {
                ...this.state.validationState,
                email: false,
            },
        });
    }
    if (eid) {
        this.setState({
            validationState: {
                ...this.state.validationState,
                eid: false,
            },
        });
    }
}

Не уверены, что вы имеете в виду в слове «не должно влиять на других»? Объясните пожалуйста?

Yossi 26.10.2018 07:32

Я имею в виду, что каждый оператор if должен иметь соответствующий оператор else, независимый от другого.

myrrtle 26.10.2018 07:47

Вам нужен блок else, в котором fname не имеет значения?

jasonscript 26.10.2018 07:49

независимый звучит как: if (lname) {} else {}, if (fname) {} else {} и т. д. Но я уверен, что вы не это имеете в виду ...

Yossi 26.10.2018 07:54

вы должны использовать if (первое условие) {Сделать что-нибудь} else if (второе условие) {Сделать что-нибудь} else if {(третье условие) {Сделать что-нибудь} else (если ни одно условие не выполнено) {Сделать что-нибудь}

Daniel Gonzalez 26.10.2018 07:58

@Yossi точно. Проблема, с которой я столкнулся, заключается в том, что else for fname влияет на lname.

myrrtle 26.10.2018 07:59

так мой нынешний подход не сработает? или я могу использовать для этого оператор switch?

myrrtle 26.10.2018 08:02

@jasonscript yes, а оператор else для fname не должен быть независимым от lname

myrrtle 26.10.2018 08:03
1
8
46
1

Ответы 1

Далее проверяется lname, выполняется либо предложение if, либо предложение else, затем, независимо от того, что произошло до сих пор, проверяется fname и т. д. Это то, что вы искали?

validate = (lname, fname, email, eid) => {
  if (lname) {
    this.setState({
        validationState: {
            ...this.state.validationState,
            lastname: false,
        },
    });
  } else {
  ....
  }

  if (fname) {
    this.setState({
        validationState: {
            ...this.state.validationState,
            firstname: false,
        },
    });
  } else {
  ....
  }

  if (helpers.isEmail(email)) {
    this.setState({
        validationState: {
            ...this.state.validationState,
            email: false,
        },
    });
  } else {
  ...
  }

  if (eid) {
    this.setState({
        validationState: {
            ...this.state.validationState,
            eid: false,
        },
    });
  } else {
  ...
  }

}

Другие вопросы по теме