[英]object is possibly "undefined" ts2532
I get the error when I want to make a slider and I have looked for several alternatives to solve it but none of them work.当我想制作一个滑块时出现错误,我已经寻找了几种解决方法,但它们都不起作用。 The error is in useEffect(() => {setWidth ( carousel.current.scrollWidth - carousel.current.offsetWidth)}, []);错误在于 useEffect(() => {setWidth ( carousel.current.scrollWidth - carousel.current.offsetWidth)}, []); and in carousel.current并在 carousel.current
import React from "react"; import { motion } from "framer-motion"; import { useRef, useEffect, useState } from "react"; import images from "../images"; function Sliders() { const [width, setWidth] = useState(0); const carousel = useRef(); useEffect(() => { setWidth (carousel.current.scrollWidth - carousel.current.offsetWidth) }, []); return ( <div className="Sliders"> <motion.div red={carousel} className="carusel" whileTap={{cursor: "grabbing"}} > <motion.div drag="x" dragConstraints={{ right: 0, left: -width}} className="inner-carousel" > {images.map((image) => { return ( <motion.div className="item" key={image}> <img src={image} alt="" /> </motion.div> ); })} </motion.div> </motion.div> </div> ); } export default Sliders
When the component is launched, initially the value for carousel.current
is undefined.启动组件时,最初carousel.current
的值是未定义的。 Just wrap the statement in if condition, and I believe it should work.只需将语句包装在 if 条件中,我相信它应该可以工作。
useEffect(() => {
if (carousel?.current) {
setWidth (carousel.current.scrollWidth - carousel.current.offsetWidth)
}
}, []);
Note: You can try to console carousel.current before return statement to be sure when the object is undefined and at what point it gets populated.注意:您可以尝试在 return 语句之前控制 carousel.current 以确定对象何时未定义以及何时填充它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.