0

我正在创建一个在屏幕上显示元素列表的反应应用程序。我创建了让用户按名称对元素进行排序的函数。

const [schools, setSchools] = useState([{title: element1}, {title: element2}, ...]);

  const sortSchools = (key, value) => {
      setSchools(schools.sort(compareValues(key, value)));
      console.log(schools);
  }

该功能正常运行,改变了学校的状态;我可以从控制台看到,但元素没有重新渲染。

我认为这是因为 React 在值未更改时不会重新渲染组件,但由于顺序更改后无法找到重新渲染元素的方法。

4

2 回答 2

3

您需要将一个新实例传递给 setScholls 以使组件重新渲染,试试这个:

const sortSchools = (key, value) => {
  setSchools([...schools.sort(compareValues(key, value))]);
  console.log(schools);
}
于 2020-02-27T21:09:11.970 回答
0

我在这里找到了答案:UI not re-rendering on state update using React Hooks and form submit

这也与Taki提供的答案相同。

于 2020-02-27T21:13:09.970 回答