如何使用映射或循环使用 React JS 渲染图像?
How to render images with React JS using map or loop?
这是我的 js 文件,其中包含我的图片。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<img src={require("./icons/name1.png")} alt="" className="img-responsive" />
<img src={require("./icons/name2.png")} alt="" className="img-responsive" />
<img src={require("./icons/name3.png")} alt="" className="img-responsive" />
<img src={require("./icons/name4.png")} alt="" className="img-responsive" />
</div>
</footer>
</div>
);
}
}
export default Stopka;
以及渲染它的文件。
import React from 'react';
import ReactDOM from 'react-dom';
import Stopka from './Stopka';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<Stopka />, document.getElementById('stopka'));
registerServiceWorker();
目前我的图像没有在优化模式下渲染,因为如果我想添加 20 个或更多,那将是非常痛苦的。我想用循环或地图功能渲染它。尝试了一些但它不起作用。你能解释一下我该怎么做吗?
这是我试过的。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['name1', 'name2', 'name3'];
for (let i = 0; i < this.props.level; i++) {
names.push(<image src={require("./icons/"+names+".png")} alt="" className="img-responsive" key={i} /> );
}
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{names}
</div>
</footer>
</div>
);
}
}
export default Stopka;
再试一次
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['wood', 'sun'];
let images = names.map(name => {
<img
src = {require("./icons/{name}.png")}
alt = ""
className="img-responsive" />
});
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ images }
</div>
</footer>
</div>
);
}
}
export default Stopka;
但是这个得到错误"Module not found: Can't resolve './icons/{name}.png' "
你可以使用js map
function combined with ES 6 template literals.
class Stopka extends Component {
render() {
const array = ["wood", "lake", "sun", "moon", "sea"];
const images = array.map(image => {
return <img key={image} src={require(`./icons/${image}.png`)} className="img-responsive" />
});
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ images }
</div>
</footer>
</div>
);
}
}
export default Stopka;
对于和我有同样问题的人。这也是工作示例。
在我看来,使用键索引更好,因为它不会在控制台中产生错误。
非常适合大型项目。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['wood', 'sun', 'moon', 'sea'].map( (name, index) => {
return <img key={index} className="img-responsive" alt="" src={require(`./icons/${name}.png`)} />
} );
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ names }
</div>
</footer>
</div>
);
}
}
export default Stopka;
感谢 Paul Fitzgerald 的指导。
这是我的 js 文件,其中包含我的图片。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<img src={require("./icons/name1.png")} alt="" className="img-responsive" />
<img src={require("./icons/name2.png")} alt="" className="img-responsive" />
<img src={require("./icons/name3.png")} alt="" className="img-responsive" />
<img src={require("./icons/name4.png")} alt="" className="img-responsive" />
</div>
</footer>
</div>
);
}
}
export default Stopka;
以及渲染它的文件。
import React from 'react';
import ReactDOM from 'react-dom';
import Stopka from './Stopka';
import registerServiceWorker from './registerServiceWorker';
ReactDOM.render(<Stopka />, document.getElementById('stopka'));
registerServiceWorker();
目前我的图像没有在优化模式下渲染,因为如果我想添加 20 个或更多,那将是非常痛苦的。我想用循环或地图功能渲染它。尝试了一些但它不起作用。你能解释一下我该怎么做吗?
这是我试过的。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['name1', 'name2', 'name3'];
for (let i = 0; i < this.props.level; i++) {
names.push(<image src={require("./icons/"+names+".png")} alt="" className="img-responsive" key={i} /> );
}
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{names}
</div>
</footer>
</div>
);
}
}
export default Stopka;
再试一次
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['wood', 'sun'];
let images = names.map(name => {
<img
src = {require("./icons/{name}.png")}
alt = ""
className="img-responsive" />
});
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ images }
</div>
</footer>
</div>
);
}
}
export default Stopka;
但是这个得到错误"Module not found: Can't resolve './icons/{name}.png' "
你可以使用js map
function combined with ES 6 template literals.
class Stopka extends Component {
render() {
const array = ["wood", "lake", "sun", "moon", "sea"];
const images = array.map(image => {
return <img key={image} src={require(`./icons/${image}.png`)} className="img-responsive" />
});
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>Some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ images }
</div>
</footer>
</div>
);
}
}
export default Stopka;
对于和我有同样问题的人。这也是工作示例。 在我看来,使用键索引更好,因为它不会在控制台中产生错误。 非常适合大型项目。
import React, { Component } from 'react';
import './Stopka.css';
class Stopka extends Component {
render() {
let names = ['wood', 'sun', 'moon', 'sea'].map( (name, index) => {
return <img key={index} className="img-responsive" alt="" src={require(`./icons/${name}.png`)} />
} );
return (
<div className="container">
<footer className="row">
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
<h4>some text</h4>
</div>
<div className="col-xs-12 col-sm-6 col-md-6 col-lg-6">
{ names }
</div>
</footer>
</div>
);
}
}
export default Stopka;
感谢 Paul Fitzgerald 的指导。