惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
WordPress大学
WordPress大学
博客园 - Franky
雷峰网
雷峰网
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
人人都是产品经理
人人都是产品经理
月光博客
月光博客
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
小众软件
小众软件
Cloudbric
Cloudbric
量子位
N
News and Events Feed by Topic
Vercel News
Vercel News
Security Archives - TechRepublic
Security Archives - TechRepublic
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Check Point Blog
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
T
Tenable Blog
S
Secure Thoughts
Know Your Adversary
Know Your Adversary
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cyber Attacks, Cyber Crime and Cyber Security
Stack Overflow Blog
Stack Overflow Blog
Help Net Security
Help Net Security
L
LINUX DO - 最新话题
Google DeepMind News
Google DeepMind News
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
N
News | PayPal Newsroom
PCI Perspectives
PCI Perspectives
T
Troy Hunt's Blog
GbyAI
GbyAI
Attack and Defense Labs
Attack and Defense Labs
C
Cybersecurity and Infrastructure Security Agency CISA
Y
Y Combinator Blog
美团技术团队
爱范儿
爱范儿
Martin Fowler
Martin Fowler
Last Week in AI
Last Week in AI
P
Privacy International News Feed
T
The Blog of Author Tim Ferriss
F
Full Disclosure

React

react 的旧文档网站,切换语言到中文,直接跳到新文档?? - V2EX react 这个技术栈到底是如何做到每天都有新发现的? 除了 next.js,在 2026 年,还有哪些 React 全栈框架推荐? - V2EX React 列表虚拟化如何实现使用 CSS Grid 布局的同时支持拖动元素? - V2EX 想不通, React 现代框架的设计者,为什么内置的 onClick 不默认防抖? - V2EX 关于低代码的选型,请佬们帮我分析一下 - V2EX 将 Markdown 文件导入为 React 组件 - 写作文档,即时获取交互式演示 - V2EX 现代 React 应用卡顿的主要原因是什么?组件库 vs 重渲染机制 - V2EX 前端开发进军 server 端还是问题很多 - V2EX 问一下, expo react native 的 TextInput 在小米系统下,显示有问题。大家有遇到么,如何解决。 - V2EX React Suite v6:面向现代化的稳健升级 - V2EX 各位总们,开发兼容到 ios 11 的 APP, RN 推荐吗 - V2EX expo-image 在使用时候必须要加 style 属性 ? - V2EX 佬们, 咨询一个前端 React 的开发效率问题, 就是如果想快速实现一个界面组件的效果,只需要 render 部分, 有什么好用的工具吗? - V2EX 2025 快过完了,有 ssr 需求的项目现在最佳选择是什么? - V2EX 在 react 中使用 signals 库 - V2EX react charts 技术选型 - V2EX 折腾了好几天总算在 windows 系统本地打包 expo 项目出 apk 了,分享下经验 - V2EX 一个 RN 小游戏代码修改的活 - V2EX 为什么 React-Native 总是昨天还能编译,今天就报错了 - V2EX React 19 下有什么方便点的组件? Arco Design 用起来还是有些问题 时隔多年再次用 react,请问 ahooks 的 useMemoizedFn 和 react 内置的 useEffectEvent 有什么异同? - V2EX 来个专业写 移动 web 前端的, React - V2EX 谁有闲工夫, React,帮忙定位并处理下 BUG react antd 就是包了巧克力的屎 - V2EX React 多人开发怎么确保性能,有没有最佳实践 - V2EX zustand create 出来的 useStore,需不需要 destory? - V2EX 关于 React: - V2EX Metis UI:下一代 React 组件库,重新定义前端开发体验 - V2EX React 组件库 Gluestack 出现多个恶意软件包 gpt 给我搞懵了,是我对 Suspense 理解有误吗? 有用 LiveKit 开发过视频语音会议系统的嘛 - V2EX RN 怎么构建输出 Java 的原生工程啊? 大佬们,有没有好用的 react.js 画布组件? 技术文章翻译: React 协调机制 - V2EX 不知道是 react 不行还是阿里不行, 或者是我电脑不行? 访问阿里云卡卡的.滚动一愣一愣的. 不敢相信在 2025,怎么自己 build/bundle + self-host 一个 ESM 版本的 react.js 和 react-dom.js 也是一个找不到官方答案的问题。问了 AI,答案也不靠谱 - V2EX 有没有熟悉 react native 的老哥,求帮忙看个问题 - V2EX React 写的越多,就越想直接操作 DOM - V2EX react native 有类似 antd/x 的 ai 对话组件库吗 - V2EX react 最佳技术栈是什么? - V2EX 是不是都用 expo-image 了,分享下 react-native-turbo-image - V2EX 用 AI 写了个 react 的资讯网站,才发现 SEO 很差,怎么办 - V2EX 反思,我写的前端的 react 味是不是太重了 - V2EX 小白求助,React 项目无法修改 - V2EX 被 antd 惯坏了,别的组件库用的很难受,大家有这种感觉吗? - V2EX React 学习曲线要比 Vue 陡峭许多呀 - V2EX 请教一个关于 useEffect 依赖的问题 - V2EX 请教一个 react native FlatList 的问题 - V2EX
提问一个 React 的问题
Plumbiu · 2025-07-09 · via React

这是一个创建于 339 天前的主题,其中的信息可能已经有所发展或是发生改变。

像是 fetch 这种请求,需要根据某个 state 变化重新请求,例如 pageSize ,大家一般用以下哪种写法(或者自己有更好的也可说一下):

useEffect:

useEffect(() => {
	fetch(`xxx?pageSize=${pageSize}`)
}, [pageSize])

在 state 发生变化的组件调用 fetch:

<Pagination
  pageSize={pageSize}
  onChange={(pageSize) => {
    fetch(`xxx?pageSize=${pageSize}`)
  }}
/>

我个人更倾向第二种,第一种 useEffect 看上去更方便,不用第二种需要在每个 state 变化的组件调用 fetch ,但是长期维护下来可能会有意想不到的 bug (公司里有个项目因为缓存的 code 和后端返回的 code 不同,导致 useEffect 调用了两边,自己 dev 环境下 mock 很难察觉)

foolishcrab

1

foolishcrab      2025 年 7 月 9 日 via iPhone   ❤️ 1

这是 react fc 出来以后讨论了好几年的问题了,没什么价值。
写第一种的人早就下班了,你从页面上点半天也点不出他什么 bug, 而你还在加班欣赏你优雅的代码。
另外 in practice 第二种绝对是更复杂的,你举一个多参数接口的例子就知道了

donaldturinglee

2

donaldturinglee      2025 年 7 月 9 日 via Android

第二种比较好的做法是 onChange={handle PageSize},但是这种方式写起来也挺痛苦的

vace

3

vace      2025 年 7 月 9 日   ❤️ 1

const [ pageSize, setPageSize ] = useState(10)

const { data } = useSWR(`xxx?pageSize=${pageSize}`, fetch)

<Pagination pageSize={pageSize} onChange={setPageSize} />

realkaiway

4

realkaiway      2025 年 7 月 9 日 via iPhone   ❤️ 2

我劝你早点用 TanStack Query ,早下班,还优雅

darkengine

5

darkengine      2025 年 7 月 9 日

真实情况下,除了 pageSize 还有其他条件,例如 page ,还有 gender 这些,你怎么处理的?

twk93

6

twk93      2025 年 7 月 10 日

单从问题的两个选择来看肯定选第一个,代码好维护。更好的方案就是楼上说的使用 TanStack Query

dabingbing

8

dabingbing      2025 年 7 月 10 日

第一种啊, 两次那是严格模式,生产不会两次

hwdq0012

9

hwdq0012      2025 年 7 月 10 日

严格模式会调 react 函数两次,帮你确定是否是 纯函数
ps:我学 react native 时从文档上看到的,好奇楼主是从哪个途径学习的

yhxx

10

yhxx      2025 年 7 月 10 日

现在流行的是这样的:
const { data, isLoading } = useQuery(['data', page, pageSize], () =>
fetch(`xxx?page=${page}&pageSize=${pageSize}`).then(res => res.json())
)

你提的两种选一个的话应该是第一种好一些

kamilic

11

kamilic      2025 年 7 月 10 日

react-query or swr 都支持 pagination 的特性

HowardTang

12

HowardTang      2025 年 7 月 10 日

TanStack Query / useSwr

Asuler

14

Asuler      2025 年 7 月 10 日

选第二种,因为第一种有很恶心的闭包问题,你现在只是写了 pageSize 这个参数而已,实际情况可能还有很多表单参数,你在这里面都拿不到最新的。到时候你要维护,你就不断地往 useEffect 的[]里加,一更新就触发调用了,然而用户更多是想点击查询按钮的时候再去调用接口,而不是表单每个值填上后就触发调接口,到时候你维护起来还得加一堆 if 判断

dabennn

15

dabennn      2025 年 7 月 10 日

能不用 useEffect 就不用 useEffect ,参数多起来互相打架,改都改不动

Plumbiu

18

Plumbiu      2025 年 7 月 11 日

@vace 我很好奇这种库和第一种差别,除了封装好更简洁,还有其他好处吗,因为我第一眼觉得 useSWR 参数变了,不还是要重新请求,假如我有个参数 scene ,只有后端区分场景,前端 ui 不可见,使用 uesRef 保存,state 更新岂不会发起二次请求

Plumbiu

19

Plumbiu      2025 年 7 月 11 日

@Plumbiu 像是这种,模拟了一下 ```jsx

import { useEffect, useRef, useState } from 'react'

function useSWR(url: string) {
useEffect(() => {
console.log(url)
}, [url])
}

function App() {
const sceneRef = useRef<number>(0)
const [count, setCount] = useState(0)
useSWR(`/?scene=${sceneRef.current}`)

return (
<>
<div>{count}</div>
<button
onClick={() => {
setCount(count + 1)
sceneRef.current = count
}}
>
count+
</button>
</>
)
}

export default App

```