В настоящее время я изучаю концепцию хуков в React и пытаюсь понять приведенный ниже пример.
import { useState } from 'react';
function Example() {
// Declare a new state variable, which we'll call "count"
const [count, setCount] = useState(0);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>
Click me
</button>
</div>
);
}
В приведенном выше примере увеличивается счетчик самого параметра функции-обработчика. Что, если я хочу изменить значение счетчика внутри функции обработчика событий
Рассмотрим ниже пример
setCount = () => {
//how can I modify count value here. Not sure if I can use setState to modify its value
//also I want to modify other state values as well here. How can I do that
}
<button onClick={() => setCount()}>
Click me
</button>
javascript
reactjs
react-native
react-hooks
Хемадри Дасари
источник
источник
useState
это реализовано. Вот определение версии 16.9 .Ответы:
Перехватчики React - это новый способ (все еще разрабатываемый) для доступа к основным функциям реакции, например,
state
без использования классов, в вашем примере, если вы хотите увеличить счетчик непосредственно в функции обработчика, не указывая его непосредственно вonClick
опоре, вы может сделать что-то вроде:и onClick:
Давайте быстро объясним, что происходит в этой строке:
useState(0)
возвращает кортеж, где первый параметрcount
- это текущее состояние счетчика иsetCounter
метод, который позволит нам обновить состояние счетчика. Мы можем использовать этотsetCounter
метод для обновления состоянияcount
где угодно - в этом случае мы используем его внутриsetCount
функции, где мы можем делать больше вещей; идея с крючками состоит в том, что мы можем сохранить наш код более функциональным и избегать компонентов на основе классов, если они не желательны / не нужны.Я написал статью полностью о крючках с несколькими примерами (включая счетчики) , такие как это codepen , я использовал
useState
,useEffect
,useContext
и пользовательские крючки . Я мог бы подробнее рассказать о том, как работают хуки в этом ответе, но документация очень хорошо объясняет ловушку состояния и другие хуки, надеюсь, это поможет.update: хуки больше не являются предложением , так как теперь они доступны для использования в версии 16.8, на сайте React есть раздел, который отвечает на некоторые часто задаваемые вопросы .
источник
setSomething
, если я затем попробую использоватьsomething
сразу после этого, кажется, что у него все еще старое значение ...useState
это один из встроенных хуков реагирования, доступных в0.16.7
версии.useState
следует использовать только внутри функциональных компонентов.useState
это способ, если нам нужно внутреннее состояние и не нужно реализовывать более сложную логику, такую как методы жизненного цикла.Обратите внимание, что
useState
обратный вызов ловушки для обновления состояния ведет себя иначе, чем компонентыthis.setState
. Чтобы показать вам разницу, я приготовил два примера.Новый объект создается при использовании
setUserInfo
обратного вызова. Обратите внимание, мы потерялиlastName
ключевое значение. Чтобы исправить это, мы могли передавать функцию внутрьuseState
.См. Пример:
Подробнее
useState
см. В официальной документации .источник
Синтаксис
useState
ловушки прост.const [value, setValue] = useState(defaultValue)
Если вы не знакомы с этим синтаксисом, перейдите сюда .
Я бы порекомендовал вам прочитать документацию. Там есть отличные объяснения с приличным количеством примеров.
источник
useState
- один из хуков, доступных в React v16.8.0. Это в основном позволяет вам превратить ваши компоненты, не имеющие состояния / функциональные, в компоненты, которые могут иметь собственное состояние.На самом базовом уровне это используется следующим образом:
Затем это позволяет вам вызывать
setLoading
передачу логического значения. Это отличный способ иметь функциональный компонент с отслеживанием состояния.источник
useState()
это перехватчик React. Хуки позволяют использовать состояние и изменчивость внутри функциональных компонентов.Хотя вы не можете использовать хуки внутри классов, вы можете обернуть свой компонент класса функцией один и использовать хуки из него. Это отличный инструмент для переноса компонентов из класса в форму функции. Вот полный пример:
В этом примере я буду использовать компонент счетчика. Это оно:
Это простой компонент класса с состоянием подсчета, а обновление состояния выполняется методами. Это очень распространенный шаблон в компонентах класса. Во-первых, оберните его функциональным компонентом с тем же именем, который делегирует все свои свойства обернутому компоненту. Также вам необходимо отобразить завернутый компонент в возвращении функции. Вот:
Это точно такой же компонент, с таким же поведением, тем же именем и одинаковыми свойствами. Теперь давайте перейдем к состоянию подсчета к функциональному компоненту. Вот как это происходит:
Обратите внимание, что метод
inc
все еще существует, он никому не повредит, на самом деле это мертвый код. Это идея, просто продолжайте поднимать состояние. По завершении вы можете удалить компонент класса:Хотя это позволяет использовать хуки внутри компонентов класса, я бы не рекомендовал вам это делать, за исключением случаев, когда вы выполняете миграцию, как я в этом примере. Смешивание компонентов функций и классов приведет к беспорядку в управлении состоянием. надеюсь, это поможет
Наилучшие пожелания
источник
useState () - это пример встроенной ловушки React, которая позволяет вам использовать состояния в ваших функциональных компонентах. Это было невозможно до React 16.7.
Функция useState - это встроенный обработчик, который можно импортировать из пакета реакции. Это позволяет вам добавлять состояние к вашим функциональным компонентам. Используя ловушку useState внутри функционального компонента, вы можете создать часть состояния, не переключаясь на компоненты класса.
источник
Крючки - это новая функция в
React v16.7.0-alpha
useState
«Крючке».useState()
установить значение по умолчанию для любой переменной и управлять в функциональном компоненте (функции PureComponent).ex : const [count, setCount] = useState(0);
установить значение по умолчанию для count 0. и u может использоватьsetCount
toincrement
илиdecrement
значение.onClick={() => setCount(count + 1)}
увеличить значение счетчика. DOCисточник
Спасибо loelsonk, я так и сделал
источник
useState - это ловушка, позволяющая добавлять состояние к функциональному компоненту. Он принимает аргумент, который является начальным значением свойства состояния, и возвращает текущее значение свойства состояния и метод, который может обновлять это свойство состояния.
Вот простой пример:
import React, {useState} from react
function HookCounter {
const [count, stateCount]= useState(0)
return(
<div>
<button onClick{( ) => setCount(count+1)}> count{count} </button>
</div>
)
}
useState принимает начальное значение переменной состояния, которое в данном случае равно нулю, и возвращает пару значений. Текущее значение состояния было вызвано count, а метод, который может обновлять переменную состояния, был вызван как setCount.
источник