Size: a a a

React — русскоговорящее сообщество

2021 January 27

T

Triada in React — русскоговорящее сообщество
обновил
источник

MD

Max Dmitriev in React — русскоговорящее сообщество
Ребят, нужна помощь
Задача: сделать возможность параллельного увеличения значения переменной coins
То-есть чтобы кликанье по кнопке не мешало setInterval увеличивать значение coins
Вот код: https://codesandbox.io/s/react-parallel-jouwn?file=/src/App.js

На данный момент кликанье блокирует увеличение через интервал
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Max Dmitriev
Ребят, нужна помощь
Задача: сделать возможность параллельного увеличения значения переменной coins
То-есть чтобы кликанье по кнопке не мешало setInterval увеличивать значение coins
Вот код: https://codesandbox.io/s/react-parallel-jouwn?file=/src/App.js

На данный момент кликанье блокирует увеличение через интервал
передавай фукнцию в setState
setState((prev)=>prev+1);
источник

T

Triada in React — русскоговорящее сообщество
кстати а есть разница между
const newState = state + 1
setState(newState)

и
setState((state) => state + 1)

?
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Triada
я в первый раз гистом пользуюсь)
очень много всего...
источник

MD

Max Dmitriev in React — русскоговорящее сообщество
Adel Gilyazeev
передавай фукнцию в setState
setState((prev)=>prev+1);
у меня так и стоит вроде setCoins((prev) => prev + automatic);
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Triada
кстати а есть разница между
const newState = state + 1
setState(newState)

и
setState((state) => state + 1)

?
да
источник

T

Triada in React — русскоговорящее сообщество
а в чем разница?
источник

Д

Дима in React — русскоговорящее сообщество
Когда работаешь с мутацией прошлого состояния надо делать через лямбду
источник

Д

Дима in React — русскоговорящее сообщество
Иначе могут быть непредвиденные приколы когда неправильно обновляется состояние
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
первый вариант у тебя замкнут на старое значение, во втором же, ты актуальное значение получаешь во время обновления
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Triada
кстати а есть разница между
const newState = state + 1
setState(newState)

и
setState((state) => state + 1)

?
кароч первый тип сто раз вызови за один реднер, у тебя стейт сто раз перезапишится значением 5+1, а во втором случае у тебя каждые сто раз, эта пятёрка будет значением предудущего setState
источник

T

Triada in React — русскоговорящее сообщество
я как раз использую первый способ и данные всегда приходят корректные
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Triada
я как раз использую первый способ и данные всегда приходят корректные
у тебя просто небыло иных случаев...
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
например:
const [state,setState] = useState(0);
const handle = () => {
    for(var i = 0; i<100; ++i) {
    setState(state+i);
}}

вызови функцию handle по нажатию кнопки и утебя в стейте станет 99, а не сумма чисел
источник

T

Triada in React — русскоговорящее сообщество
я вообще не использую setState в цикле
источник

T

Triada in React — русскоговорящее сообщество
понятно что тут он заглючит
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
Triada
я вообще не использую setState в цикле
это утрированный пример
источник

AG

Adel Gilyazeev in React — русскоговорящее сообщество
господи, я весь день трачу на не свою работу(
источник

T

Triada in React — русскоговорящее сообщество
=)
источник