Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/content/learn/synchronizing-with-effects.md
Original file line number Diff line number Diff line change
Expand Up @@ -728,7 +728,7 @@ function TodoList() {
- **Effect 不会在服务端运行**。这意味着最初由服务器渲染的 HTML 只会包含加载状态,而没有实际数据。客户端必须先下载所有的 JavaScript 并渲染应用,才会发现它需要加载数据——这并不高效。
- **直接在 Effect 中进行数据请求,容易产生“网络瀑布(network waterfall)”**。首先父组件渲染时请求一些数据,随后渲染子组件,接着子组件开始请求它们的数据。如果网络速度不快,这种方式会比并行获取所有数据慢得多。
- **直接在 Effect 中进行数据请求往往无法预加载或缓存数据**。例如,如果组件卸载后重新挂载,它必须重新获取数据。
- **不够简洁**。编写 fecth 请求时为了避免 [竞态条件(race condition)](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect) 等问题,会需要很多样板代码。
- **不够简洁**。编写 fetch 请求时为了避免 [竞态条件(race condition)](https://maxrozen.com/race-conditions-fetching-data-react-with-useeffect) 等问题,会需要很多样板代码。

这些弊端并不仅限于 React。任何库在组件挂载时进行数据获取都会遇到这些问题。与路由处理一样,要做好数据获取并非易事,因此我们推荐以下方法:

Expand Down