【发布时间】:2019-03-24 17:16:56
【问题描述】:
我决定为我的组件使用 React 钩子,使用窗口宽度和调整大小事件侦听器。问题是我无法访问我需要的当前值。我得到了在添加事件监听器时设置的嵌套值。
将函数传递给值设置器函数对我来说不是一个解决方案,因为它会强制渲染并破坏我的其他功能。
我附上简单的例子来呈现核心问题:
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'));
请帮忙。
【问题讨论】:
标签: javascript reactjs addeventlistener react-hooks