Abrufen der Breite eines Elements bei Verwendung von Inline-JSX-Rendering in einer Return-Anweisung
P粉441076405
P粉441076405 2023-09-20 22:00:52
0
1
545

Ich habe ein Element und möchte seine Breite berechnen und dann iterieren, wie oft es dauert, mindestens die Breite des Ansichtsfensters auszufüllen.

Das Problem ist, dass ich die Breite nicht über den von mir verwendeten Inline-JSX-Renderstil ermitteln kann. Selbst wenn ich es als Abhängigkeit festlege, erhalte ich in useEffect immer noch die Fehlermeldung „refWidth is empty“.

Gibt es eine Möglichkeit, korrekt zu berechnen und zu rendern, ohne zuerst das Element zur Return-Anweisung hinzuzufügen, seine Breite zu ermitteln und dann die erforderliche Anzahl von Elementen anzuhängen?

CodeSandbox-Link hier

P粉441076405
P粉441076405

Antworte allen (1)
P粉317679342

要在内联JSX渲染中访问元素的宽度,可以使用useLayoutEffect hook。

import { useLayoutEffect, useRef, useState } from "react"; export default function App() { const windowWidth = 1920; const ref = useRef(null); const [numberOfItems, setNumberOfItems] = useState(0); useLayoutEffect(() => { ref.current && setNumberOfItems(Math.ceil(windowWidth / ref.current.clientWidth)); }, [windowWidth]); return ( 

hello

{Array.from({ length: numberOfItems }, (_, i) => (

hello

))}
); }

useLayoutEffecthook确保在元素渲染后进行宽度计算,从而得到更准确的结果。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!