"Реагировать JS" Как передать данные массива с помощью реквизита?
render() {
const Array = this.props.students.map((data) => {
return (
<button
key={data.name}
//key={data.birthDate}
//key={data.age}
//key={data.class}
>{data.name}</button>
);
});
return (
<div>
{Array}
<StudentInfo name = {"Amira"}/>
</div>
);
}
Это мой код В настоящее время я пытаюсь передать массив данных из этого <button></button>
в <StudentInfo />
и заменить name = {"Amira"}
Кто-нибудь может мне с этим помочь?
Спасибо.
3 ответа
Это может быть ваш ответ: Как передать массив элементов в REACT.js
Это решит проблему,
render() {
const nameArray = [];
const Array = this.props.students.map((data) => {
nameArray.push(data.name); //fill the array with names
return (
<button
key={data.name}
//key={data.birthDate}
//key={data.age}
//key={data.class}
>{data.name}</button>
);
});
return (
<div>
{Array}
<StudentInfo name = {nameArray}/>
</div>
);
}
То, что вы хотите сделать, это что-то вроде этого
constructor(props){
super(props);
this.students = [
{name: 'john'},
{name: 'paul'},
{name: 'clara'}
];
this.state = {
selectedStudent: this.students[0]
}
this.selectStudent = this.selectStudent.bind(this);
}
selectStudent(student){
this.setState({selectedStudent: student});
}
render(){
return (
<div>
{this.students.map((student, i) => (
<button key={i}
onClick={() => this.selectStudent(student)}
>{student.name}</button>
))}
<h1>{this.state.selectedStudent.name}</h1>
</div>
);
}
онлайн-демонстрация: https://codesandbox.io/s/91wp5j33pw