尝试设置 window 高度,但在 react.js 中出现错误
Trying to set window height but it gives an error in react.js
我使用 useState 获取 window 高度,但它给出了一个运行时错误,指出 window 未定义。你知道为什么吗
代码如下:
let [winHeight,setWinHeight] = useState(window.innerHeight)
useEffect(() => {
const list = []
for (var i=0;i<datas.length;i++){
const t = datas[i].title
const res = handleResize(i + 2)
list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
}
setWinHeight(window.innerHeight)
setLinks(list)
}, [winHeight])
您是否尝试过在 useEffect 的依赖数组中添加 window.height?
useEffect(() => {
const list = []
for (var i=0;i<datas.length;i++){
const t = datas[i].title
const res = handleResize(i + 2)
list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
}
setLinks(list)
}, [window.innerHeight])
试试这个:
let [winHeight,setWinHeight] = useState(0)
useEffect(()=> {
setWinHeight(window.innerHeight)
},[])
并且您还需要从 'react'.
导入 useEffect
window 未定义,因为在您尝试访问 window 对象时该组件不是渲染器。
你 运行 是 RN 吗?那你可以试试这个得到高度~
import { Dimensions } from 'react-native';
const windowHeight = Dimensions.get('window').height;
上次Post
添加 resize
event listener
在这之后,当您更改 window
的高度时,它会更新 winHeight
const lastHeight = useRef(window.innerHeight);
const [winHeight, setWinHeight] = useState(lastHeight.current);
useEffect(() => {
window.addEventListener('resize', (e) => {
const curHeight = e.currentTarget?.innerHeight;
if (lastHeight.current !== curHeight) {
lastHeight.current = curHeight;
setWinHeight(curHeight);
}
});
}, []);
在 UseEffect
的依赖数组中使用 [window.innerHeight] 而不是 [winHeight]
我使用 useState 获取 window 高度,但它给出了一个运行时错误,指出 window 未定义。你知道为什么吗
代码如下:
let [winHeight,setWinHeight] = useState(window.innerHeight)
useEffect(() => {
const list = []
for (var i=0;i<datas.length;i++){
const t = datas[i].title
const res = handleResize(i + 2)
list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
}
setWinHeight(window.innerHeight)
setLinks(list)
}, [winHeight])
您是否尝试过在 useEffect 的依赖数组中添加 window.height?
useEffect(() => {
const list = []
for (var i=0;i<datas.length;i++){
const t = datas[i].title
const res = handleResize(i + 2)
list.push(<li ref={resl[i + 1]} style={{top: "20px",left: res + "px"}}><Anchor href={datas[i].link || `/${t.replace(/ /g, "_")}`}><a onClick={() => closeNav()} onMouseOver={() => setHovering(i)}>{t}</a></Anchor></li>)
}
setLinks(list)
}, [window.innerHeight])
试试这个:
let [winHeight,setWinHeight] = useState(0)
useEffect(()=> {
setWinHeight(window.innerHeight)
},[])
并且您还需要从 'react'.
导入 useEffectwindow 未定义,因为在您尝试访问 window 对象时该组件不是渲染器。
你 运行 是 RN 吗?那你可以试试这个得到高度~
import { Dimensions } from 'react-native';
const windowHeight = Dimensions.get('window').height;
上次Post
添加 resize
event listener
在这之后,当您更改 window
的高度时,它会更新winHeight
const lastHeight = useRef(window.innerHeight);
const [winHeight, setWinHeight] = useState(lastHeight.current);
useEffect(() => {
window.addEventListener('resize', (e) => {
const curHeight = e.currentTarget?.innerHeight;
if (lastHeight.current !== curHeight) {
lastHeight.current = curHeight;
setWinHeight(curHeight);
}
});
}, []);
在 UseEffect
的依赖数组中使用 [window.innerHeight] 而不是 [winHeight]