我在next.js中编写了这段代码,但是遇到了一个错误。窗口未定义”。您能帮助我如何修复它吗
function IconWeatherComponent({icon}) {
let [svg, setSvg] = useState('');
useEffect(() => {
const setIcon = () => {
if (icon === '01d') {
setSvg('day.svg')
}
if (icon === '01n') {
setSvg('night.svg')
}
setIcon();
}, [icon])
return (
<div>
<img src={`${window.location.origin}/weather-icons/${svg}`} width="70" height="70" alt=""/>
</div>
);
}
export default IconWeatherComponent
2条答案
按热度按时间hl0ma9xz1#
window
不是在构建时定义的,因此不能直接在JSX中访问它。它只在浏览器中定义。您只需要在运行时在useEffect钩子中检查位置。nkoocmlb2#
您要访问窗口对象,但此解决方案中的窗口尚未定义。请将您的代码添加到usseefect并将数据保存到state。希望能解决您的问题