reactjs - 使用 useEffect 重新渲染状态变化
问题描述
应用程序不会在状态更改时重新呈现不同的数据。
开发工具中的状态确实发生了变化,但没有显示在页面上。
使用按钮过滤。
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>
);
};
解决方案
添加了在 setStoryUrl 之前清除 storyIds 的功能
const handleFilter = tag => {
setStoryIds([]);
setStoryUrl(tag);
};
推荐阅读
- c# - 如何在属性中捕获异常
- php - 来自 wordpress 请求的 AWS Lightsail 实例停机
- microsoft-graph-api - 如何以编程方式在 teams.microsoft.com 上创建视频会议?
- palantir-foundry - 如何在我的 Foundry 代码存储库中强制执行最低测试覆盖率?
- angular - 将应用内容放在 mat-sidenav-content 中
- javascript - Azure Function axios POST 空响应
- oracle - 每天 TB 大小的存档存储空间
- javascript - 在按钮单击时将内容添加到另一个 div 中
- python - python,从IP摄像头接收rtsp流
- java - 如何在 Xamarin Android 活动之间传递回调方法