React: Можете ли вы использовать имя аргумента для изменения состояния с тем же именем? - PullRequest
0 голосов
/ 13 января 2020

У меня много дублирующих операторов this.setState, которые делают одно и то же, переключая его состояние, поэтому мне было интересно, возможно ли общее переключение. Я знаю, что этот код не работает, и я думаю, что неправильно называю глобальное состояние. Может быть, это более подробный вопрос, который я пытаюсь выяснить:

onToggleState => (state) => {
  this.setState(prevState => ({
    state: prevState.state
  }));
}

Ответы [ 2 ]

0 голосов
/ 13 января 2020

делать это не рекомендуется, кстати, лучше иметь метод setState для каждого состояния в компонентах с состоянием, вот пример

handleSetState(key, value){
    this.setState({
        [key]: value,
    });
}

пример его использования:

this.handleSetState('foo', 'bar'); // equivalent of this.setState({foo: 'bar'});

он поместит 'bar' в качестве значения состояния с именем 'foo'

, но, как я понимаю, это не очень хороший способ справиться с этим, поэтому у нас есть хуки в реакции

const [foo, setFoo] = useState(null);
const [bar, setBar] = useState(null);

setFoo('foo');
setBar('bar');
0 голосов
/ 13 января 2020

Надеюсь, это поможет.

onToggleState => (state) => {
  this.setState(prevState => ({
    [state]: !prevState[state]
  }));
}
...