Tenho algum problema com minhas imagens no meu projeto de reação. Na verdade, eu sempre pensei que o caminho relativo no atributo src era construído na arquitetura de arquivos
Aqui minha arquitetura de arquivos:
components
file1.jsx
file2.jsx
file3.jsx
container
img
js
...
No entanto, percebi que o caminho é construído no URL. Em um dos meus componentes (por exemplo, em file1.jsx), tenho o seguinte:
localhost/details/2
<img src="../img/myImage.png" /> -> works
localhost/details/2/id
<img src="../img/myImage.png" /> -> doesn't work, images are not displayed
Como é possível resolver este problema? Quero que, em qualquer forma de rotas manipuladas pelo react-router, todas as imagens possam ser exibidas com o mesmo caminho.
javascript
reactjs
webpack
onedkr
fonte
fonte
require
. Leia esta resposta no SO para obter mais informações.Respostas:
Você está usando um URL relativo, que é relativo ao URL atual, não ao sistema de arquivos. Você pode resolver isso usando URLs absolutos
<img src ="http://localhost:3000/details/img/myImage.png" />
Mas isso não é ótimo para quando você implanta no www.my-domain.bike ou em qualquer outro site. Melhor seria usar um URL em relação ao diretório raiz do site
<img src="/details/img/myImage.png" />
fonte
/
que precededetails
(vs./details
, etc, para outros que podem confundir os dois).reactjs
comcordova
e usandoES5
como eslint/images/popcorn.png
e não./images/popcorn.png
. Trabalhou para mim com todas as rotas e outras coisas.Em
create-react-app
caminhos relativos, as imagens parecem não funcionar. Em vez disso, você pode importar uma imagem:fonte
import './styles/style.less'; **import logo from './styles/images/deadline.png';**
Estou recebendo erro no módulo de segunda linha não encontrado enquanto a imagem existe e o caminho está correto.Se você usou create-react-app para criar seu projeto, sua pasta pública está acessível. Então você precisa adicionar sua
image
pasta dentro da pasta pública.<img src="/images/logo.png" />
fonte
www.example.com/react-app
, a pasta pública será exposta em www.example.com, semreact-app
. Isso pode ser problemático, portanto a resposta aceita é a correta. Fontes: adicionando ativos e usando pasta públicaCom
create-react-app
existe uma pasta pública (com index.html ...). Se você colocar seu "myImage.png" lá, digamos, na subpasta img , poderá acessá-los através de:fonte
Crie uma pasta de imagens dentro de src (/ src / images) e mantenha sua imagem nela. Em seguida, importe esta imagem em seu componente (use seu caminho relativo). Como abaixo-
import imageSrc from './images/image-name.jpg';
E então no seu componente.
<img title="my-img" src={imageSrc} alt="my-img" />
Outra maneira é manter as imagens na pasta pública e importá-las usando o caminho relativo. Para isso, crie uma pasta de imagem em pasta pública e mantenha sua imagem nela. E então no seu componente use-o como abaixo.
<img title="my-img" src='/images/my-image.jpg' alt="my-img" />
O método funciona, mas o primeiro é recomendado, porque sua maneira mais limpa e as imagens são manipuladas pelo webpack durante o tempo de compilação.
fonte
no meu caso, o código a seguir também funciona.
fonte
Algumas respostas antigas não funcionam, outras são boas, mas não explicam o tema, em resumo:
Se a imagem estiver no diretório 'public'
Exemplo:
\public\charts\a.png
Em html:
Em JavaScript:
Crie uma imagem para o novo img dinamicamente:
Defina a imagem como img existente com o ID como 'img1', dinamicamente:
Se a imagem estiver no diretório 'src':
Exemplo:
\src\logo.svg
Em JavaScript:
Em jsx:
fonte
Incluindo o carregador de arquivos npm no webpack.config.js de acordo com as instruções de uso oficiais, da seguinte maneira:
trabalhou para mim.
fonte
Importar imagens no seu componente
E chame o nome da imagem na imagem src = {RecentProjectImage_3} como um objeto
fonte
Um amigo me mostrou como fazer isso da seguinte maneira:
"./" funciona quando o arquivo que está solicitando a imagem (por exemplo, "example.js") está no mesmo nível na estrutura da árvore de pastas que a pasta "images".
fonte
Coloque o logotipo na sua pasta pública em, por exemplo, public / img / logo.png e, em seguida, consulte a pasta pública como% PUBLIC_URL%:
O uso de% PUBLIC_URL% acima será substituído pelo URL da
public
pasta durante a compilação. Somente arquivos dentro dapublic
pasta podem ser referenciados no HTML.Diferentemente de "/img/logo.png" ou "logo.png", "% PUBLIC_URL% / img / logo.png" funcionará corretamente tanto com o roteamento do lado do cliente quanto com um URL público não raiz. Aprenda a configurar um URL público não raiz executando
npm run build
.fonte