React 컴포넌트에 이미지(.svg, .png)를 Import하는 방법
리액트 컴포넌트 중 하나에 이미지 파일을 Import하려고 합니다.웹 팩을 사용하여 프로젝트를 셋업했습니다.
여기 컴포넌트 코드가 있습니다.
import Diamond from '../../assets/linux_logo.jpg';
export class ItemCols extends Component {
render(){
return (
<div>
<section className="one-fourth" id="html">
<img src={Diamond} />
</section>
</div>
)
}
}
이것이 제 프로젝트 구조입니다.
webpack.config.js 파일을 다음과 같이 셋업했습니다.
{
test: /\.(jpg|png|svg)$/,
loader: 'url-loader',
options: {
limit: 25000,
},
},
{
test: /\.(jpg|png|svg)$/,
loader: 'file-loader',
options: {
name: '[path][name].[hash].[ext]',
},
},
PS. 다른 리모트 소스에서 이미지를 얻을 수 있지만 로컬에 저장된 이미지는 얻을 수 없습니다.JavaScript Console에서도 오류가 발생하지 않습니다.무엇이든 도와 주세요.나는 반응하는 것이 꽤 처음이고 내가 무엇을 잘못하고 있는지 찾을 수 없다.
써보다
import mainLogo from'./logoWhite.png';
//then in the render function of Jsx insert the mainLogo variable
class NavBar extends Component {
render() {
return (
<nav className="nav" style={nbStyle}>
<div className="container">
//right below here
<img src={mainLogo} style={nbStyle.logo} alt="fireSpot"/>
</div>
</nav>
);
}
}
require를 사용하여 다음과 같은 이미지를 렌더링할 수도 있습니다.
//then in the render function of Jsx insert the mainLogo variable
class NavBar extends Component {
render() {
return (
<nav className="nav" style={nbStyle}>
<div className="container">
//right below here
<img src={require('./logoWhite.png')} style={nbStyle.logo} alt="fireSpot"/>
</div>
</nav>
);
}
}
이미지가 src/assets 폴더 내에 있는 경우 사용할 수 있습니다.requirerequire 스테이트먼트에 올바른 경로가 포함되어 있는 경우,
var Diamond = require('../../assets/linux_logo.jpg');
export class ItemCols extends Component {
render(){
return (
<div>
<section className="one-fourth" id="html">
<img src={Diamond} />
</section>
</div>
)
}
}
"create-react-app"을 사용하지 않는 절차는 거의 없습니다. (webpack@5.23.0) 먼저 file-loader를 devDedepencie로 설치하고 다음 단계는 webpack.config에 규칙을 추가하는 것입니다.
{
test: /\.(png|jpe?g|gif)$/i,
loader: 'file-loader',
}
src 디렉토리에 declarationFiles.d.ts(예를 들어)라는 파일을 만들고 모듈을 등록합니다.
declare module '*.jpg';
declare module '*.png';
dev-server 를 재기동합니다.이러한 단계를 거친 후 코드 아래와 같은 이미지를 가져와 사용할 수 있습니다.
import React from 'react';
import image from './img1.png';
import './helloWorld.scss';
const HelloWorld = () => (
<>
<h1 className="main">React TypeScript Starter</h1>
<img src={image} alt="some example image" />
</>
);
export default HelloWorld;
typescript 및 javaccript로 동작합니다.확장자를 .ts에서 .js로 변경하기만 하면 됩니다.
건배.
다음의 조작도 가능합니다.
...
var imageName = require('relative_path_of_image_from_component_file');
...
...
class XYZ extends Component {
render(){
return(
...
<img src={imageName.default} alt="something"/>
...
)
}
}
...
주의: 이미지가 프로젝트 루트 폴더 외부에 없는지 확인하십시오.
또한 .png 이미지를 Import해야 하는 경우에도 비슷한 요건이 있었습니다.저는 이 이미지를 공용 폴더에 저장했습니다.그래서 다음과 같은 접근법이 효과가 있었습니다.
<img src={process.env.PUBLIC_URL + './Images/image1.png'} alt="Image1"></img>
상기 외에 require도 사용해 보았습니다만, 저에게도 효과가 있었습니다.이미지 폴더에 이미지를 src 디렉토리에 포함시켰습니다.
<img src={require('./Images/image1.png')} alt="Image1"/>
변수를 사용하여 이미지를 동적으로 Import하려면 다음을 사용합니다.
const imageName = "myImage.png"
const images = require.context('../images',true);
const [imgUrl, setImgUrl] = useState('');
useEffect(() => {
if (images && imageName) {
setImgUrl(
images(`./${imageName}`).default
);
}
}, [imageName,images]);
...
<img src={imgUrl} />
폴더를 만들고 이름을 지정합니다.images.ts또는images.js원하는 위치에 저장하십시오.
를 사용하여 폴더의 모든 이미지를 내보냅니다.export {default as imageName} from 'route'진술.
export { default as image1 } from "assets/images/1.png";
export { default as image2 } from "assets/images/2.png";
export { default as image3 } from "assets/images/3.png";
export { default as image4 } from "assets/images/4.png";
그런 다음 를 사용하여 이미지를 Import합니다.import {imageDefaultName} from 'route'
import {image1,image2,image3,image4} from 'assets/images'
<img src={image1} />
<img src={image2} />
<img src={image3} />
<img src={image4} />
또는
import * as images from 'assets/images'
<img src={images.image1} />
<img src={images.image2} />
<img src={images.image3} />
<img src={images.image4} />
import React, {Component} from 'react';
import imagename from './imagename.png'; //image is in the current folder where the App.js exits
class App extends React. Component{
constructor(props){
super(props)
this.state={
imagesrc=imagename // as it is imported
}
}
render(){
return (
<ImageClass
src={this.state.imagesrc}
/>
);
}
}
class ImageClass extends React.Component{
render(){
return (
<img src={this.props.src} height='200px' width='100px' />
);
}
}
export default App;
user5660307 answer를 사용했습니다.또한 react 및 nodejs를 사용한 서버 측 렌더링의 경우 express 서버에 다음을 추가할 수 있습니다.
app.use(express.static("public"));
및 webpack.client.dll:
module.exports = {
entry: "./src/client/client.js",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "public"),
},
module: {
rules: [
...
{
loader: require.resolve("file-loader"),
exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
options: {
name: "static/media/[name].[hash:8].[ext]",
},
},
{
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
loader: require.resolve("url-loader"),
options: {
name: "static/media/[name].[hash:8].[ext]",
},
},
],
},
};
src 폴더의 이미지와 함께 폴더를 이동하면 문제가 해결.그리고 이미지('create-react-app'을 통해 작성된 프로젝트)로 눈을 돌렸습니다.
= document.image = document.createElement("img"); .= src = required../filength/police.png';
언급URL : https://stackoverflow.com/questions/43823289/how-to-import-image-svg-png-in-a-react-component
'programing' 카테고리의 다른 글
| 경고:알 수 없는 DOM 속성 클래스입니다.className을 말하는 건가요? (0) | 2023.03.16 |
|---|---|
| 모든 사용자 테이블을 삭제하는 방법 (0) | 2023.03.16 |
| 뒤로 버튼을 누를 때 추가된 데이터 기억 (0) | 2023.03.16 |
| get_module이 모든 투고를 반환하지 않음 (0) | 2023.03.16 |
| Wordpress 데이터베이스 스키마가 외부 키를 사용하지 않는 이유는 무엇입니까? (0) | 2023.03.16 |
