Что такое `useState (null) [1]` в перехватчиках React? - PullRequest
2 голосов
/ 05 февраля 2020

Я сейчас использую React-хуки. Я видел useState(null)[1], но я забыл, где я его видел.

Интересно, что отличается от useState(null)?

Ответы [ 2 ]

6 голосов
/ 05 февраля 2020

В документах написано

Возвращает значение с состоянием и функцию для его обновления.

Но они имеют в виду

Возвращает массив , где первая позиция - это значение с состоянием, а вторая позиция - функция для его обновления.

Хук useState возвращает массив, где первая позиция (индекс 0) является состоянием, а вторая позиция (индекс 1) является установщиком для этого состояния.

Таким образом, при использовании useState(null)[1] вы получаете только установщик для этого состояния.

Когда вы делаете

 const [state, setState] = useState(null)

То, что вы делаете, называется Назначение деструктуры

И поскольку в большинстве случаев вы хотите иметь и state, и setState, деструктурирование делает его намного проще в использовании, чем делает.

const hook = useState(null)
const state = hook[0]
const setState = hook[1]

С деструктурой вы можно сделать это только с одной строкой, которая намного чище

И если вам нужен только сеттер, вы можете сделать это с помощью

const setState = useState(null)[1] // only getting the setter
* 1 045 * Просто имейте в виду, что это одно и то же .

Интересно, что отличается от useState (null)?

useState(null) возвращает массив ([state, setState])

useState(null)[1] обращается к возвращенному массиву (setState)

2 голосов
/ 05 февраля 2020

Следующие выражения эквивалентны:

const [, setState] = useState(null); // Destructuring assignment
const setState = useState(null)[1]; // Array index excess.

Поскольку useState возвращает массив значений, вы можете распаковать значения из массива .

Также, Вы можете получить доступ ( индексировать к ) элемента массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...