我有一个非常大的对象数组,从 CSV 解析(PapaParse):
import { readRemoteFile } from 'react-papaparse'
const [studentData, setStudentData] = useState(null)
const [filteredStudents, setFilteredStudents] = useState([])
const [loading, setLoading] = useState(true)
useEffect(() => {
grabData()
}, [])
const grabData = () => {
readRemoteFile('my-data.csv', {
complete: (results) => { // this method gets called once file is finished parsing
setStudentData(results.data)
setLoading(false)
}
}
}
我想过滤学生数据,只显示名为“Amber”的学生,例如:
const getFilteredStudents = (name) => {
let updatedStudents = studentData.filter((student) => {
return student.name === name
}
setFilteredStudents(updatedStudents)
// Error: Too many re-renders. React limits the number of renders to prevent an infinite loop.
}
if (!loading) {
getFilteredStudents('Amber')
}
在上面的代码块中,调用setFilteredStudents(updatedStudents)会导致反应错误。
最后我只想渲染组件中过滤后的学生:
render (
<div>
{ filteredStudents ?
filteredStudents.map((student, index) => {
<div key={index}>
student.name
</div>
} : null
}
</div>
)
侃侃无极
幕布斯7119047
相关分类