Я решил использовать ловушки React для моего компонента, используя windom width и изменить размер прослушивателя событий.Проблема в том, что я не могу получить доступ к текущему значению, которое мне нужно.Я получаю вложенное значение, которое было установлено при добавлении прослушивателя событий.
Передача функции в функцию установки значений не является для меня решением, поскольку она вызывает рендеринг и нарушает другие мои функции.
Я прилагаю минималистичныйпример для представления основной проблемы:
import React, { Component, useState, useEffect } from 'react';
import { render } from 'react-dom';
const App = () => {
const [width, setWidth] = useState(0);
const resize = () => {
console.log("width:", width); // it's always 0 even after many updates
setWidth(window.innerWidth);
};
useEffect(() => {
resize();
window.addEventListener("resize", resize);
return () => window.removeEventListener("resize", resize);
}, []);
return <div>{width}</div>;
}
render(<App />, document.getElementById('root'));
LIVE DEMO IS HERE
Пожалуйста, за помощью.