提问者:小点点

在React中更改背景图像的URL


我试图通过访问DOM和更改css属性来更改背景图像,如下所示:

///anotherweathermap.js

const changePic = () => {
    document.getElementById('bckgAnother').style.backgroundImage = "url(../img/kaunas.jpg)";
}


共1个答案

匿名用户

CSS图像中的相对URL是在样式表的位置(对于内联CSS,它将是网页本身的URL)和图像的URL之间计算的。

两者都没有关系:

  • JS文件的URL
  • JS文件在文件系统中的位置
  • 图像在文件系统中的位置(用于确定其获取的URL的位置除外)

由于您使用的是React,您将需要import图像,然后使用它的导入值来获取URL。

您应该更改您的逻辑,以基于状态设置值,并避免直接的DOM操作。

import Default from '../img/default.jpg';
import Kaunas from '../img/kaunas.jpg';


const AnotherWeatherMap = (props) => {
    const [background, setBackground] = useState(Default);

    const css = {
        backgroundImage: `url(${background})`
    };

    return (<div style={css}>
        <button onClick={ () => setBackground(Kaunas) }>Change background<button>
    </div>);
};