Как React State Hook получает имя переменной состояния из ES6 Destructuring Assignment - PullRequest
2 голосов
/ 12 апреля 2019

В React State Hooks можно написать следующую строку, чтобы установить переменную состояния с именем count, и функцию setCount, чтобы установить значение впоследствии, как показано ниже:

const [count, setCount] = useState(0);

Что будет эквивалентно написанию:

this.state = { count: 0 };

У меня вопрос, как функция useState() может получить имя переменной состояния - count в этом случае,из оператора назначения ES6 Destructuring?

Разве не происходит деструктурирование после того, как функция вернула свое значение?Или возможно динамически получать разрушаемые значения внутри функции при ее вызове?

Обновление

Обратите внимание, что я понимаю, что могудеконструировать любое имя, которое я хочу, но как useState() знает, какая переменная должна находиться в состоянии , поэтому ее можно использовать позже.

Например, если я установил два состоянияпеременные, как он различает два значения, если функция useState() не знает имен переменных?

const [age, setAge] = useState(42);
const [fruit, setFruit] = useState('banana');

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

useState возвращает массив, где первый элемент - это значение, а второй - установщик, и с помощью de-structuring вы можете присвоить ему любое имя

Например, приведенный выше код эквивалентен

const state = useState(0);
const count = state[0];
const setCount = state[1];
0 голосов
/ 12 апреля 2019

Возвращает массив, который вы уничтожаете.Первый индекс массива - это значение, второй - функция.С помощью деструктуризации массива вы можете установить имя для этих переменных

Пример:

const [one, two] = ["test", () => {console.log(1)}];
console.log(one) // would be test
two() // would print out 1

Подробнее здесь: https://medium.freecodecamp.org/array-destructuring-in-es6-30e398f21d10

...