Artigo original: React Background Image Tutorial – How to Set backgroundImage with Inline CSS Style

Há quatro modos de definir uma propriedade de estilo backgroundImage usando CSS em linha com o React.

Este tutorial mostrará os quatro métodos, com exemplos de código para cada um.

Como definir uma imagem de segundo plano no React usando um URL externo

Se a sua imagem estiver localizada em outro lugar on-line, você pode definir a imagem de segundo plano de seu elemento inserindo o URL assim:

function App() {
  return (
    <div style={{ 
      backgroundImage: `url("https://via.placeholder.com/500")` 
    }}>
      Hello World
    </div>
  );
}
Definindo a imagem de segundo plano no React com URL externo

O código acima fará a renderização de um único elemento <div> com o estilo background-image: url(https://via.placeholder.com/500) aplicado a ele.

Como definir uma imagem de segundo plano no React a partir de sua pasta /src

Se você fizer o bootstraping de sua aplicação usando Create React App e se sua imagem estiver dentro da pasta src/, você pode fazer o import da imagem primeiro e colocá-la como segundo plano de seu elemento:

import React from "react";
import background from "./img/placeholder.png";

function App() {
  return (
    <div style={{ backgroundImage: `url(${background})` }}>
      Hello World
    </div>
  );
}

export default App;
Definindo a imagem de segundo plano usando uma imagem importada

Ao executar o comando npm start, o React mostrará uma mensagem dizendo "Failed to compile" (não foi possível compilar) e interromperá a build quando a imagem não for encontrada:

React-failed-to-compile-image
A compilação do React falhou. A imagem não foi encontrada.

Deste modo, você não mostrará links quebrados de imagens na sua aplicação para a web. No código acima, o valor de backgroundImage é definido usando uma template string, que permite a você incorporar expressões em JavaScript.

Como definir uma imagem de segundo plano no React usando o método de URL relativo

A pasta public/ no Create React App pode ser usada para adicionar itens estáticos à sua aplicação no React. Todos os arquivos colocados nessa pasta ficarão acessíveis on-line.

Se você colocar um arquivo image.png na pasta public/, poderá acessá-lo em <seu endereço de host>/image.png. Ao executar o React no seu computador local, a imagem deverá estar em http://localhost:3000/image.png.

Então, você pode atribuir o URL relativo ao endereço do seu host para definir a imagem de segundo plano. Veja aqui um exemplo:

<div style={{ backgroundImage: "url(/image.png)" }}>
  Hello World
</div>
Definindo a imagem de segundo plano com URL relativo

Ao definir o caminho do URL como /image.png, como no exemplo acima, o navegador buscará a imagem de segundo plano em <seu endereço de host>/image.png.

Você também poderá criar outra pasta dentro de public/ se quiser organizar suas imagens em pastas. Por exemplo:

Screen-Shot-2020-12-14-at-20.18.30
Criando uma pasta img/ dentro da pasta public/

Não se esqueça de ajustar o valor de backgroundImage para url(/img/image.png) se decidir criar a pasta.

Como definir uma imagem de segundo plano no React usando o método de URL absoluto

Você também pode incluir o URL absoluto usando a variável de ambiente PUBLIC_URL do  Create React App assim:

<div style={{ 
  backgroundImage: `url(${process.env.PUBLIC_URL + '/image.png'})` 
}}>
  Hello World
</div>
Definindo a imagem de segundo plano com URL absoluto

Ao executar isso no seu computador local, os scripts do React lidarão com o valor de PUBLIC_URL. Quando você executar o programa no local, ela terá a aparência de um URL relativo em vez de um URL absoluto:

absolute-url-background-image-1
O URL absoluto da imagem não é mostrado no computador local

O URL absoluto será visto apenas quando você fizer o deploy do React na aplicação de produção mais tarde.

Como definir uma imagem de segundo plano com propriedades adicionais

Se quiser personalizar ainda mais a imagem de segundo plano, você pode fazer isso colocando propriedades adicionais após backgroundImage. Aqui temos um exemplo:


<div style={{ 
  backgroundImage: `url(${process.env.PUBLIC_URL + '/image.png'})`,
  backgroundRepeat: 'no-repeat',
  width:'250px' 
}}>
  Hello World
</div>
Definindo a imagem de segundo plano com propriedades adicionais

As propriedades definidas acima, background-repeat: no-repeat e width: 250px serão incorporadas ao estilo background-image do elemento <div>.

Obrigado por sua leitura. Espero que tenha achado útil este artigo. Se tiver perguntas, pode encontrar o autor no Twitter. Ele também compartilhará algumas pequenas dicas de desenvolvedor de vez em quando. 🙂