Задать вопрос
@Quintis

Как синхронно передать переменную в cleanup useEffect?

Здраствуйте , как сделать так что б при клике на кнопку click фунуция после return показывала ту же самую переменную что и функция перед return ?
import React, { useState, useEffect } from "react";
import "./styles.css";

export default function App() {
  let [text, setText] = useState("q");

  useEffect(() => {
    console.log(text + " first");
    return () => {
      console.log(text + " second");
    };
  }, [text]);
  return (
    <div className="App">
      <h1>{text}</h1>
      <button onClick={() => setText(text + "q")}>click</button>
    </div>
  );
}

https://codesandbox.io/s/vigorous-shockley-hctlb?f...
  • Вопрос задан
  • 194 просмотра
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
@Quintis Автор вопроса
import React, { useState, useEffect, useRef } from "react";
import "./styles.css";

export default function App() {
  let [text, setText] = useState("q");

  let textRef = useRef(text);

  useEffect(() => {
    console.log(text + " first");
    return () => {
      console.log(textRef.current + " second");
    };
  }, [text]);
  return (
    <div className="App">
      <h1>{text}</h1>
      <button
        onClick={() => {
          setText(text + "q");
          textRef.current = textRef.current + "q";
        }}
      >
        click
      </button>
    </div>
  );
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽