【发布时间】:2018-11-25 15:13:23
【问题描述】:
我有一个数组
let ability = ["100", "500" , "90" , "90" , "90" , "90" , "90" , "90" , "90" , "90"]
我正在迭代器中创建对象,并希望将数组的每个值传递给“Progress Circle”的道具。所以第一个对象的宽度是 100,第二个对象的宽度是 500,依此类推。
import React, {Component} from 'react';
import ProgressCircle from './ProgressCircle';
import './App.css';
class Skills extends Component {
render(){
let skills = ["HTML", "CSS", "Swift", "PHP", "Python", "React.js",
"Javascript", "Git", "API Integration", "Java"]
let ability = ["100", "500" , "90" , "90" , "90" , "90" , "90" , "90" ,
"90" , "90"]
let map = skills.map(function(skill, i) {
return(
<div key={i}>
<h1 id="skill">{skill}</h1>
<ProgressCircle ability={ability[i]}/>
</div>
);
})
return(
<div className="skillsCont">
<h1 id="skillsTitle">My Skills</h1>
{map}
</div>
);
}
}
export default Skills;
但是,当对象在对象的类中呈现时,在 props 中传递的值不是唯一的。当迭代器遍历数组时,它会不断更改所有对象,因此所有对象最终都具有数组中最后一个值的道具,即所有对象的宽度最终为 90
import React, {Component} from 'react';
import $ from 'jquery';
import './App.css';
class ProgressCircle extends Component {
componentDidMount() {
$('.enter').click(function() {
setTimeout(function() {
$('.progressFill').animate({"width": this.props.ability}, 1000);
}.bind(this), 6000);
}.bind(this));
}
render(){
return(
<div className="progress">
<div className="progressFill">
</div>
</div>
);
}
}
export default ProgressCircle;
知道如何解决这个问题吗?
【问题讨论】:
标签: javascript arrays reactjs iterator components