使用 UseState Hook 后 React 组件不会重新渲染
React component not re-rendering after using UseState Hook
我正在创建一个在屏幕上显示元素列表的 React 应用程序。我创建了允许用户按名称对元素进行排序的函数。
const [schools, setSchools] = useState([{title: element1}, {title: element2}, ...]);
const sortSchools = (key, value) => {
setSchools(schools.sort(compareValues(key, value)));
console.log(schools);
}
功能正常,改变学校状态;我可以从控制台看到,但元素没有重新渲染。
我认为这是因为当值没有改变时 React 不会重新渲染组件,但是在顺序改变后无法找到重新渲染元素的方法。
您需要将一个新实例传递给 setScholls 以便组件重新渲染,试试这个:
const sortSchools = (key, value) => {
setSchools([...schools.sort(compareValues(key, value))]);
console.log(schools);
}
我在这里找到了答案:
这也与泷提供的答案相同。
我正在创建一个在屏幕上显示元素列表的 React 应用程序。我创建了允许用户按名称对元素进行排序的函数。
const [schools, setSchools] = useState([{title: element1}, {title: element2}, ...]);
const sortSchools = (key, value) => {
setSchools(schools.sort(compareValues(key, value)));
console.log(schools);
}
功能正常,改变学校状态;我可以从控制台看到,但元素没有重新渲染。
我认为这是因为当值没有改变时 React 不会重新渲染组件,但是在顺序改变后无法找到重新渲染元素的方法。
您需要将一个新实例传递给 setScholls 以便组件重新渲染,试试这个:
const sortSchools = (key, value) => {
setSchools([...schools.sort(compareValues(key, value))]);
console.log(schools);
}
我在这里找到了答案:
这也与泷提供的答案相同。