Skip to content

Commit d0437b5

Browse files
committed
fix(learn): 化簡器 -> reducer
1 parent de2addc commit d0437b5

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

src/content/learn/scaling-up-with-reducer-and-context.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
---
2-
title: 使用化簡器和 Context 擴充應用程式
2+
title: 使用 Reducer 和 Context 擴充應用程式
33
---
44

55
<Intro>
66

7-
化簡器(reducers)可以整合元件的狀態更新邏輯。Context 能將資訊深入向下傳遞到其他的元件。你可以混用化簡器和 context 來管理複雜畫面的狀態。
7+
Reducers 可以整合元件的狀態更新邏輯。Context 能將資訊深入向下傳遞到其他的元件。你可以混用 reducer 和 context 來管理複雜畫面的狀態。
88

99
</Intro>
1010

1111
<YouWillLearn>
1212

13-
* 如何混用化簡器和 context
13+
* 如何混用 reducer 和 context
1414
* 如何避免藉由屬性(props)傳送狀態和派發 action
1515
* 如何維持不同檔案中的 context 和狀態邏輯
1616

1717
</YouWillLearn>
1818

19-
## 混用化簡器和 context {/*combining-a-reducer-with-context*/}
19+
## 混用 reducer 和 context {/*combining-a-reducer-with-context*/}
2020

21-
[介紹化簡器](/learn/extracting-state-logic-into-a-reducer)的例子中,狀態是由化簡器所管理。化簡器函式包含所有的狀態邏輯,並被宣告於檔案的下方:
21+
[介紹 reducer](/learn/extracting-state-logic-into-a-reducer)的例子中,狀態是由 reducer 所管理。Reducer 函式包含所有的狀態邏輯,並被宣告於檔案的下方:
2222

2323
<Sandpack>
2424

@@ -207,7 +207,7 @@ ul, li { margin: 0; padding: 0; }
207207

208208
</Sandpack>
209209

210-
化簡器可以讓事件處理函式保持簡潔。不過隨著應用程式成長,可能會遭遇另一種困境。**現在 `task` 狀態和 `dispatch` 函式只在 `TaskApp` 元件的頂層才能使用。** 要讓其他元件讀取任務清單或改變任務,需要另外[向下傳遞](/learn/passing-props-to-a-component)當前狀態並讓事件處理函式作為屬性來改變任務。
210+
Reducer 可以讓事件處理函式保持簡潔。不過隨著應用程式成長,可能會遭遇另一種困境。**現在 `task` 狀態和 `dispatch` 函式只在 `TaskApp` 元件的頂層才能使用。** 要讓其他元件讀取任務清單或改變任務,需要另外[向下傳遞](/learn/passing-props-to-a-component)當前狀態並讓事件處理函式作為屬性來改變任務。
211211

212212
舉例來說,`TaskApp` 將一個任務清單和一些事件處理函式傳入 `TaskList`
213213

@@ -234,7 +234,7 @@ ul, li { margin: 0; padding: 0; }
234234
這就是為什麼,作為傳遞屬性的替代方案,你可能會想把 `tasks` 狀態和 `dispatch` 函式都[放進 context](/learn/passing-data-deeply-with-context)
235235
**這樣一來,`TaskApp` 樹底下的任何元件都能讀取到任務及派發 action,而不用重複「層層傳遞屬性(prop drilling)」。**
236236

237-
以下是混用化簡器和 context 的方法:
237+
以下是混用 reducer 和 context 的方法:
238238

239239
1. **創建** context。
240240
2. 將狀態和派發函式 **放入** context。
@@ -902,7 +902,7 @@ ul, li { margin: 0; padding: 0; }
902902
903903
## 將程式碼移到獨立的檔案 {/*moving-all-wiring-into-a-single-file*/}
904904
905-
雖然不一定要這麼做,但可以將化簡器和 context 移到獨立的檔案,以進一步整理這些元件。現在 `TasksContext.js` 只包含兩個 context 的宣告:
905+
雖然不一定要這麼做,但可以將 reducer 和 context 移到獨立的檔案,以進一步整理這些元件。現在 `TasksContext.js` 只包含兩個 context 的宣告:
906906
907907
```js
908908
import { createContext } from 'react';
@@ -911,9 +911,9 @@ export const TasksContext = createContext(null);
911911
export const TasksDispatchContext = createContext(null);
912912
```
913913
914-
這個檔案逐漸變得擁擠!你將會移動化簡器到同一個檔案,接著你會宣告一個新的 `TasksProvider` 元件在同一個檔案裡。這個元件會將這些片段綁在一起:
914+
這個檔案逐漸變得擁擠!你將會移動 reducer 到同一個檔案,接著你會宣告一個新的 `TasksProvider` 元件在同一個檔案裡。這個元件會將這些片段綁在一起:
915915
916-
1. 元件會用化簡器管理狀態
916+
1. 元件會用 reducer 管理狀態
917917
2. 元件會提供兩個 context 給下面的這些元件。
918918
3. 元件會[以 `children` 作為屬性](/learn/passing-props-to-a-component#passing-jsx-as-children),因此你能傳入 JSX 給它。
919919
@@ -1141,7 +1141,7 @@ const tasks = useTasks();
11411141
const dispatch = useTasksDispatch();
11421142
```
11431143
1144-
這不會以任何方式改變行為,但會使之後進一步拆分這些 context 或增加一些函式中的邏輯。 **現在所有的 context 和化簡器串接都在 `TaskContext.js` 裡了。這能使元件保持乾淨及簡潔,並專注於要呈現的是什麼,而不是從何處獲取資料:**
1144+
這不會以任何方式改變行為,但會使之後進一步拆分這些 context 或增加一些函式中的邏輯。 **現在所有的 context 和 reducer 串接都在 `TaskContext.js` 裡了。這能使元件保持乾淨及簡潔,並專注於要呈現的是什麼,而不是從何處獲取資料:**
11451145
11461146
<Sandpack>
11471147
@@ -1349,18 +1349,18 @@ ul, li { margin: 0; padding: 0; }
13491349
13501350
</Note>
13511351
1352-
隨著應用程式成長,你可能會有很多像這樣的 context 與化簡器的配對。這是擴充應用程式的有效方式,且在需要從樹的深層取得資料時,不需要太多的工作,就能[抬升狀態](/learn/sharing-state-between-components)。
1352+
隨著應用程式成長,你可能會有很多像這樣的 context 與 reducer 的配對。這是擴充應用程式的有效方式,且在需要從樹的深層取得資料時,不需要太多的工作,就能[抬升狀態](/learn/sharing-state-between-components)。
13531353
13541354
<Recap>
13551355
1356-
- 可以混用化簡器和 context,讓任何元件讀取和更新元件上的狀態。
1356+
- 可以混用 reducer 和 context,讓任何元件讀取和更新元件上的狀態。
13571357
- 想提供狀態和派發函式給下方的元件的話:
13581358
1. 創建兩個 context(給狀態和派發函式)。
1359-
2. 由使用化簡器的元件提供兩個 context。
1359+
2. 由使用 reducer 的元件提供兩個 context。
13601360
3. 在需要讀取的元件中使用 context。
13611361
- 可以將相關程式碼移動到獨立檔案,來進一步整理元件。
13621362
- 可以導出像是 `TaskProvider` 這樣的元件來提供 context。
13631363
- 也可以導出像是 `useTasks``useTasksDispatch` 這樣的自定義 Hooks 來讀取 context。
1364-
- 在應用中可以有許多像這樣的化簡器與 context 的配對。
1364+
- 在應用中可以有許多像這樣的 reducer 與 context 的配對。
13651365
13661366
</Recap>

0 commit comments

Comments
 (0)