Skip to content

Commit

Permalink
docs(cn): improve learn/you-might-need-an-effect translation (#1338)
Browse files Browse the repository at this point in the history
  • Loading branch information
ZhaoTim authored Oct 8, 2023
1 parent d6c035b commit 1ec4e42
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/content/learn/you-might-not-need-an-effect.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Effect 是 React 范式中的一个逃脱方案。它们让你可以 “逃出
有两种不必使用 Effect 的常见情况:

* **你不必使用 Effect 来转换渲染所需的数据**。例如,你想在展示一个列表前先做筛选。你的直觉可能是写一个当列表变化时更新 state 变量的 Effect。然而,这是低效的。当你更新这个 state 时,React 首先会调用你的组件函数来计算应该显示在屏幕上的内容。然后 React 会把这些变化“[提交](/learn/render-and-commit)”到 DOM 中来更新屏幕。然后 React 会执行你的 Effect。如果你的 Effect 也立即更新了这个 state,就会重新执行整个流程。为了避免不必要的渲染流程,应在你的组件顶层转换数据。这些代码会在你的 props 或 state 变化时自动重新执行。
* **你不必使用 Effect 来处理用户事件**。例如,你想在用户购买一个产品时发送一个 `/api/buy` 的 POST 请求并展示一个提示。在这个购买按钮的点击事件处理函数中,你确切地知道会发生什么。但是你不知道用户做了什么导致 Effect 被执行(例如,点击了某个按钮)。这就是为什么你通常应该在相应的事件处理函数中处理用户事件。
* **你不必使用 Effect 来处理用户事件**。例如,你想在用户购买一个产品时发送一个 `/api/buy` 的 POST 请求并展示一个提示。在这个购买按钮的点击事件处理函数中,你确切地知道会发生什么。但是当一个 Effect 运行时,你却不知道用户做了什么(例如,点击了哪个按钮)。这就是为什么你通常应该在相应的事件处理函数中处理用户事件。

**的确** 可以使用 Effect 来和外部系统 [同步](/learn/synchronizing-with-effects#what-are-effects-and-how-are-they-different-from-events) 。例如,你可以写一个 Effect 来保持一个 jQuery 的组件和 React state 之间的同步。你也可以使用 Effect 来获取数据:例如,你可以同步当前的查询搜索和查询结果。请记住,比起直接在你的组件中写 Effect,现代 [框架](/learn/start-a-new-react-project#production-grade-react-frameworks) 提供了更加高效的,内置的数据获取机制。

Expand Down

0 comments on commit 1ec4e42

Please sign in to comment.