使用useEffect重新呈现状态更改

时间:2020-06-18 02:18:21

标签: reactjs react-hooks

应用程序不会在状态更改时重新呈现不同的数据。

状态确实会在开发工具中更改,但不会显示在页面上。

使用按钮进行过滤。

export const StoriesPage = () => {
  const [storyIds, setStoryIds] = useState([]);
  const [storyUrl, setStoryUrl] = useState('top');

  useEffect(() => {
    let url = baseUrl;

    storyUrl === 'top'
      ? (url += 'topstories.json')
      : (url += 'newstories.json');

    getStoryIds(url).then(data => setStoryIds(data));
  }, [storyUrl]);

  return (
    <div>
      <div>
        <button onClick={() => setStoryUrl('new')}>New</button>
        <button onClick={() => setStoryUrl('top')}>Top</button>
      </div>
      {storyIds.map((storyId, index) => (
        <Story key={index} storyId={storyId} />
      ))}
    </div>
  );
};

1 个答案:

答案 0 :(得分:0)

添加了一个在setStoryUrl之前清除storyIds的函数

  const handleFilter = tag => {
    setStoryIds([]);
    setStoryUrl(tag);
  };