我有一個非常大的對象數組,從 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>)
React過濾大數據集而不重新渲染(太多重新渲染錯誤)
隔江千里
2023-08-10 15:46:10
