简体   繁体   English

在 state 上重新渲染使用 useEffect 更改

[英]re render on state change with useEffect

App won't re render different data on state change.应用程序不会在 state 更改上重新呈现不同的数据。

State does change in the dev tools but doesn't show on page. State 在开发工具中确实发生了变化,但没有显示在页面上。

Using button to filter.使用按钮过滤。

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>
  );
};

Added a function that clears storyIds before setStoryUrl添加了在 setStoryUrl 之前清除 storyIds 的 function

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM