Реагируйте, проверьте состояние, если пара ключей существует в зависимости от параметра - PullRequest
0 голосов
/ 05 июня 2018

Поэтому я пытаюсь выяснить, как использовать какую-то всеобъемлющую функцию для уменьшения раздувания в моем приложении.У меня есть несколько диалоговых окон, которые обрабатываются через состояние, похожее на это:

toggleSettingsDialogue = () => {
    this.setState({settingsOpen: !this.state.settingsOpen});
}

Я пытаюсь свести эту функцию, которая повторяется для каждого дополнительного диалога, к одному.Моя мысль состоит в том, чтобы передать два параметра - один для диалога, который должен быть открыт, и другой, который определяет состояние этого диалога - либо true, либо false.Как проверить, существует ли первый переданный параметр (т.е. имя диалогового окна в состоянии) или нет.

Допустим, у нас есть состояние с ...

state = {
     diagSettingsOpen: false,
     diagAddItemOpen: false
}

Как я могу проверить, есть ли какая-либо строка, переданная в качестве параметра внутри функции, на самом деле там или нет, и впоследствии использовать этот ключ, чтобы установить состояние, если оно совпадает?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018
 toggleSettingsDialogue = key => {
   if(key in this.state)
     this.setState(({[key]: val}) => ({[key]: !val}));
}
0 голосов
/ 05 июня 2018

Вот как вы можете проверить то же самое -

let state = {
     diagSettingsOpen: false,
     diagAddItemOpen: false
}

function setState(stateName, value) {
    if (state.hasOwnProperty(stateName)) {
        state[stateName] = value;
    } else {
        console.log("invalid state");
    }
}

setState("diagSettingsOpen" ,true);
console.log(state);
setState("diagSettingsClose" ,true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...