В документах написано
Возвращает значение с состоянием и функцию для его обновления.
Но они имеют в виду
Возвращает массив , где первая позиция - это значение с состоянием, а вторая позиция - функция для его обновления.
Хук 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
)