Skip to content

Commit 1261a39

Browse files
Neo42QC-L
andauthored
docs(cn): fix several mistakes and improve coherence for reference/render (#703)
Co-authored-by: QC-L <github@liqichang.com>
1 parent dfd4fa8 commit 1261a39

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

beta/src/pages/apis/render.md

+21-20
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ title: render()
33
translators:
44
- liu-jin-yi
55
- QC-L
6+
- Neo42
67
---
78

89
<Intro>
910

10-
`render` 函数会将 [JSX](/learn/writing-markup-with-jsx)(“React 元素”)渲染到浏览器 DOM 容器节点中。它可以让 React 改变 `container` DOM,使其与传递的 JSX 相匹配。
11+
`render` 函数会将一段 [JSX](/learn/writing-markup-with-jsx)(“React 元素”)渲染到浏览器 DOM 容器节点中。它会指引 React 改变 `container` 中的 DOM,使其与所传递的 JSX 相匹配。
1112

1213
```js
1314
render(<App />, container);
@@ -18,19 +19,19 @@ render(<App />, container, callback);
1819

1920
## 渲染根组件 {/*rendering-the-root-component*/}
2021

21-
如需调用 `render`需要编写一段 JSX 代码以及一个 DOM 容器:
22+
如需调用 `render`你需要编写一段 JSX 代码以及一个 DOM 容器:
2223

2324
<APIAnatomy>
2425

25-
<AnatomyStep title="React element">
26+
<AnatomyStep title="React 元素">
2627

2728
需要渲染的 UI 界面。
2829

2930
</AnatomyStep>
3031

31-
<AnatomyStep title="DOM container">
32+
<AnatomyStep title="DOM 容器">
3233

33-
用于渲染 UI 界面的 DOM 节点。该容器不能被修改,只能修改它的子节点
34+
用于渲染 UI 界面的 DOM 节点。容器本身不会被修改,只有其子节点会被修改
3435

3536
</AnatomyStep>
3637

@@ -41,7 +42,7 @@ render(<App />, container);
4142

4243
</APIAnatomy>
4344

44-
在完全由 React 构建的应用程序中,你需要在你的应用程序的入口文件执行该操作(渲染 "root" 组件)
45+
在完全使用 React 构建的应用程序中,你需要在应用程序的最顶层执行一次该操作——渲染“根”组件
4546

4647
<Sandpack>
4748

@@ -65,7 +66,7 @@ export default function App() {
6566

6667
## 渲染多个根组件 {/*rendering-multiple-roots*/}
6768

68-
不管你用 ["哪种方式"](/learn/add-react-to-a-website) 使用 React,你都需为每个由 React 管理的顶层 UI 组件调用 `render` 函数进行渲染
69+
如果你在多个地方都散布了 React ["碎片"](/learn/add-react-to-a-website),那么你就得为每个由 React 管理的顶层 UI 组件调用 `render` 函数
6970

7071
<Sandpack>
7172

@@ -97,8 +98,8 @@ render(
9798
export function Navigation() {
9899
return (
99100
<ul>
100-
<NavLink href="/">Home</NavLink>
101-
<NavLink href="/about">About</NavLink>
101+
<NavLink href="/">首页</NavLink>
102+
<NavLink href="/about">关于</NavLink>
102103
</ul>
103104
);
104105
}
@@ -114,9 +115,9 @@ function NavLink({ href, children }) {
114115
export function Comments() {
115116
return (
116117
<>
117-
<h2>Comments</h2>
118+
<h2>评论</h2>
118119
<Comment text="你好!" author="Sophie" />
119-
<Comment text="你是谁" author="Sunil" />
120+
<Comment text="你好吗" author="Sunil" />
120121
</>
121122
);
122123
}
@@ -137,9 +138,9 @@ nav ul li { display: inline-block; margin-right: 20px; }
137138

138139
<br />
139140

140-
## 更新已渲染的 DOM {/*updating-the-rendered-tree*/}
141+
## 更新已渲染的组件树 {/*updating-the-rendered-tree*/}
141142

142-
你可以在同一 DOM 节点上多次调用 `render`。只要组件树结构与之前渲染的内容一致,React 就会 [保留该状态](/learn/preserving-and-resetting-state) 。请仔细观察在输入框中输入内容后的效果:
143+
你可以在同一 DOM 节点上多次调用 `render`。只要组件树结构与之前渲染的内容一致,React 就会 [保留 state](/learn/preserving-and-resetting-state)。请仔细观察在输入框中输入内容后的效果:
143144

144145
<Sandpack>
145146

@@ -161,7 +162,7 @@ setInterval(() => {
161162
export default function App({counter}) {
162163
return (
163164
<>
164-
<h1>Hello, world! {counter}</h1>
165+
<h1>你好,世界! {counter}</h1>
165166
<input placeholder="在这里输入一些东西" />
166167
</>
167168
);
@@ -170,22 +171,22 @@ export default function App({counter}) {
170171

171172
</Sandpack>
172173

173-
你可以使用 [`unmountComponentAtNode()`](TODO) 来销毁已渲染的 DOM 树
174+
你可以使用 [`unmountComponentAtNode()`](TODO) 来销毁已被渲染的组件树
174175

175176
<br />
176177

177178
## 何时不使用它 {/*when-not-to-use-it*/}
178179

179180
* 如果你的应用程序使用服务器渲染,并会在服务器上生成 HTML,请使用 [`hydrate`](TODO) 函数,而非 `render` 函数。
180-
* 如果你的应用程序完全基于 React 构建,你大概率不需要多次使用 `render` 函数。如果你想在 DOM 树的其他位置渲染内容(例如,modal 或者 tooltip),那么请使用 [`createPortal`](TODO) 来代替。
181+
* 如果你的应用程序完全基于 React 构建,那么你其实不需要多次使用 `render` 函数。如果你想在 DOM 树的其他位置渲染内容(例如,modal 或者 tooltip),那么请使用 [`createPortal`](TODO) 来代替。
181182

182183
<br />
183184

184185

185-
## 行为细节 {/*behavior-in-detail*/}
186+
## 细节特性 {/*behavior-in-detail*/}
186187

187-
在你第一次调用 `render` 时,`container` 内的任何已有 DOM 元素都会被替换。如果你再次调用 `render`,React 将会通过与先前渲染的组件树 ["匹配"](/learn/preserving-and-resetting-state) 的方式,来决定 DOM 的哪些部分可以重用,哪些需要重新创建。重复调用 `render` 与调用 `setState` 效果类似。无论哪种情况,React 都会避免不必要的 DOM 更新。
188+
在你第一次调用 `render` 时,`container` 内任何已有的 DOM 元素都会被替换。如果你再次调用 render 的话,React 会为了体现最新的 JSX 而进行必要的 DOM 更新。React 会通过将 DOM 与先前渲染的组件树进行“匹配”的方式来决定 DOM 的哪些部分可以复用、哪些部分需要重新创建。重复调用 render 与调用 setState 相似——在这两种情况下,React 都会避免不必要的 DOM 更新。
188189

189-
你可以将一个回调函数,作为 `render` 的第三个参数。React 会在你的组件在 DOM 中出现后,调用它
190+
你可以将一个回调函数作为第三个参数传递给 render。React 会在你的组件在 DOM 中出现后调用它
190191

191-
如果需要渲染 `<MyComponent />` ,并且 `MyComponent` 是一个类组件,`render` 函数将返回该类的实例。在其他情况下,它将返回 `null`
192+
如果你渲染了一个 `<MyComponent />` ,并且 `MyComponent` 是一个类组件,那么 `render` 函数就会返回该类的实例。在其他情况下,它将返回 `null`

0 commit comments

Comments
 (0)