diff --git a/.eslintrc b/.eslintrc
index 7bc6ab933..935fa2f23 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -9,7 +9,8 @@
"react-hooks/exhaustive-deps": "error",
"react/no-unknown-property": ["error", {"ignore": ["meta"]}],
"react-compiler/react-compiler": "error",
- "local-rules/lint-markdown-code-blocks": "error"
+ "local-rules/lint-markdown-code-blocks": "error",
+ "no-trailing-spaces": "error"
},
"env": {
"node": true,
diff --git a/next-env.d.ts b/next-env.d.ts
index 52e831b43..254b73c16 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,5 +1,6 @@
///
///
+///
// NOTE: This file should not be edited
// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information.
diff --git a/public/images/docs/scientists/1bX5QH6.jpg b/public/images/docs/scientists/1bX5QH6.jpg
new file mode 100644
index 000000000..630b91bd2
Binary files /dev/null and b/public/images/docs/scientists/1bX5QH6.jpg differ
diff --git a/public/images/docs/scientists/1bX5QH6b.jpg b/public/images/docs/scientists/1bX5QH6b.jpg
new file mode 100644
index 000000000..7bd074365
Binary files /dev/null and b/public/images/docs/scientists/1bX5QH6b.jpg differ
diff --git a/public/images/docs/scientists/1bX5QH6s.jpg b/public/images/docs/scientists/1bX5QH6s.jpg
new file mode 100644
index 000000000..0bc3a6f40
Binary files /dev/null and b/public/images/docs/scientists/1bX5QH6s.jpg differ
diff --git a/public/images/docs/scientists/2heNQDcm.jpg b/public/images/docs/scientists/2heNQDcm.jpg
new file mode 100644
index 000000000..ecc8ab394
Binary files /dev/null and b/public/images/docs/scientists/2heNQDcm.jpg differ
diff --git a/public/images/docs/scientists/3aIiwfm.jpg b/public/images/docs/scientists/3aIiwfm.jpg
new file mode 100644
index 000000000..e93d8c802
Binary files /dev/null and b/public/images/docs/scientists/3aIiwfm.jpg differ
diff --git a/public/images/docs/scientists/5qwVYb1.jpeg b/public/images/docs/scientists/5qwVYb1.jpeg
new file mode 100644
index 000000000..cd8b4e556
Binary files /dev/null and b/public/images/docs/scientists/5qwVYb1.jpeg differ
diff --git a/public/images/docs/scientists/6o5Vuyu.jpg b/public/images/docs/scientists/6o5Vuyu.jpg
new file mode 100644
index 000000000..941563f8d
Binary files /dev/null and b/public/images/docs/scientists/6o5Vuyu.jpg differ
diff --git a/public/images/docs/scientists/7vQD0fPb.jpg b/public/images/docs/scientists/7vQD0fPb.jpg
new file mode 100644
index 000000000..71baab951
Binary files /dev/null and b/public/images/docs/scientists/7vQD0fPb.jpg differ
diff --git a/public/images/docs/scientists/7vQD0fPs.jpg b/public/images/docs/scientists/7vQD0fPs.jpg
new file mode 100644
index 000000000..5da6b45f1
Binary files /dev/null and b/public/images/docs/scientists/7vQD0fPs.jpg differ
diff --git a/public/images/docs/scientists/9EAYZrtl.jpg b/public/images/docs/scientists/9EAYZrtl.jpg
new file mode 100644
index 000000000..7313ffdb2
Binary files /dev/null and b/public/images/docs/scientists/9EAYZrtl.jpg differ
diff --git a/public/images/docs/scientists/AlHTAdDm.jpg b/public/images/docs/scientists/AlHTAdDm.jpg
new file mode 100644
index 000000000..735c29cd5
Binary files /dev/null and b/public/images/docs/scientists/AlHTAdDm.jpg differ
diff --git a/public/images/docs/scientists/DgXHVwul.jpg b/public/images/docs/scientists/DgXHVwul.jpg
new file mode 100644
index 000000000..a9dba869c
Binary files /dev/null and b/public/images/docs/scientists/DgXHVwul.jpg differ
diff --git a/public/images/docs/scientists/FJeJR8M.jpg b/public/images/docs/scientists/FJeJR8M.jpg
new file mode 100644
index 000000000..433fc3503
Binary files /dev/null and b/public/images/docs/scientists/FJeJR8M.jpg differ
diff --git a/public/images/docs/scientists/HMFmH6m.jpg b/public/images/docs/scientists/HMFmH6m.jpg
new file mode 100644
index 000000000..ac0a5f6c3
Binary files /dev/null and b/public/images/docs/scientists/HMFmH6m.jpg differ
diff --git a/public/images/docs/scientists/IOjWm71s.jpg b/public/images/docs/scientists/IOjWm71s.jpg
new file mode 100644
index 000000000..af912e34b
Binary files /dev/null and b/public/images/docs/scientists/IOjWm71s.jpg differ
diff --git a/public/images/docs/scientists/JBbMpWY.jpg b/public/images/docs/scientists/JBbMpWY.jpg
new file mode 100644
index 000000000..a59002bca
Binary files /dev/null and b/public/images/docs/scientists/JBbMpWY.jpg differ
diff --git a/public/images/docs/scientists/K9HVAGHl.jpg b/public/images/docs/scientists/K9HVAGHl.jpg
new file mode 100644
index 000000000..03894f397
Binary files /dev/null and b/public/images/docs/scientists/K9HVAGHl.jpg differ
diff --git a/public/images/docs/scientists/MK3eW3Am.jpg b/public/images/docs/scientists/MK3eW3Am.jpg
new file mode 100644
index 000000000..53287dd02
Binary files /dev/null and b/public/images/docs/scientists/MK3eW3Am.jpg differ
diff --git a/public/images/docs/scientists/MK3eW3As.jpg b/public/images/docs/scientists/MK3eW3As.jpg
new file mode 100644
index 000000000..43244d0c5
Binary files /dev/null and b/public/images/docs/scientists/MK3eW3As.jpg differ
diff --git a/public/images/docs/scientists/Mx7dA2Y.jpg b/public/images/docs/scientists/Mx7dA2Y.jpg
new file mode 100644
index 000000000..ee41fbbaf
Binary files /dev/null and b/public/images/docs/scientists/Mx7dA2Y.jpg differ
diff --git a/public/images/docs/scientists/OKS67lhb.jpg b/public/images/docs/scientists/OKS67lhb.jpg
new file mode 100644
index 000000000..71d2917a7
Binary files /dev/null and b/public/images/docs/scientists/OKS67lhb.jpg differ
diff --git a/public/images/docs/scientists/OKS67lhm.jpg b/public/images/docs/scientists/OKS67lhm.jpg
new file mode 100644
index 000000000..9fe8f6307
Binary files /dev/null and b/public/images/docs/scientists/OKS67lhm.jpg differ
diff --git a/public/images/docs/scientists/OKS67lhs.jpg b/public/images/docs/scientists/OKS67lhs.jpg
new file mode 100644
index 000000000..fb3cf212c
Binary files /dev/null and b/public/images/docs/scientists/OKS67lhs.jpg differ
diff --git a/public/images/docs/scientists/QIrZWGIs.jpg b/public/images/docs/scientists/QIrZWGIs.jpg
new file mode 100644
index 000000000..2bfa8ab82
Binary files /dev/null and b/public/images/docs/scientists/QIrZWGIs.jpg differ
diff --git a/public/images/docs/scientists/QwUKKmF.jpg b/public/images/docs/scientists/QwUKKmF.jpg
new file mode 100644
index 000000000..05aa061ea
Binary files /dev/null and b/public/images/docs/scientists/QwUKKmF.jpg differ
diff --git a/public/images/docs/scientists/RCwLEoQm.jpg b/public/images/docs/scientists/RCwLEoQm.jpg
new file mode 100644
index 000000000..4d7d0b6df
Binary files /dev/null and b/public/images/docs/scientists/RCwLEoQm.jpg differ
diff --git a/public/images/docs/scientists/Sd1AgUOm.jpg b/public/images/docs/scientists/Sd1AgUOm.jpg
new file mode 100644
index 000000000..b81b83d21
Binary files /dev/null and b/public/images/docs/scientists/Sd1AgUOm.jpg differ
diff --git a/public/images/docs/scientists/Y3utgTi.jpg b/public/images/docs/scientists/Y3utgTi.jpg
new file mode 100644
index 000000000..8d44e4fed
Binary files /dev/null and b/public/images/docs/scientists/Y3utgTi.jpg differ
diff --git a/public/images/docs/scientists/YfeOqp2b.jpg b/public/images/docs/scientists/YfeOqp2b.jpg
new file mode 100644
index 000000000..44e0c65cb
Binary files /dev/null and b/public/images/docs/scientists/YfeOqp2b.jpg differ
diff --git a/public/images/docs/scientists/YfeOqp2s.jpg b/public/images/docs/scientists/YfeOqp2s.jpg
new file mode 100644
index 000000000..19ef15704
Binary files /dev/null and b/public/images/docs/scientists/YfeOqp2s.jpg differ
diff --git a/public/images/docs/scientists/ZF6s192.jpg b/public/images/docs/scientists/ZF6s192.jpg
new file mode 100644
index 000000000..f50c7e348
Binary files /dev/null and b/public/images/docs/scientists/ZF6s192.jpg differ
diff --git a/public/images/docs/scientists/ZF6s192m.jpg b/public/images/docs/scientists/ZF6s192m.jpg
new file mode 100644
index 000000000..056f8d52b
Binary files /dev/null and b/public/images/docs/scientists/ZF6s192m.jpg differ
diff --git a/public/images/docs/scientists/ZfQOOzfl.jpg b/public/images/docs/scientists/ZfQOOzfl.jpg
new file mode 100644
index 000000000..5c9e249bd
Binary files /dev/null and b/public/images/docs/scientists/ZfQOOzfl.jpg differ
diff --git a/public/images/docs/scientists/aTtVpES.jpg b/public/images/docs/scientists/aTtVpES.jpg
new file mode 100644
index 000000000..00e09d093
Binary files /dev/null and b/public/images/docs/scientists/aTtVpES.jpg differ
diff --git a/public/images/docs/scientists/aeO3rpIl.jpg b/public/images/docs/scientists/aeO3rpIl.jpg
new file mode 100644
index 000000000..3b535b072
Binary files /dev/null and b/public/images/docs/scientists/aeO3rpIl.jpg differ
diff --git a/public/images/docs/scientists/bE7W1jis.jpg b/public/images/docs/scientists/bE7W1jis.jpg
new file mode 100644
index 000000000..a15a897ea
Binary files /dev/null and b/public/images/docs/scientists/bE7W1jis.jpg differ
diff --git a/public/images/docs/scientists/dB2LRbj.jpg b/public/images/docs/scientists/dB2LRbj.jpg
new file mode 100644
index 000000000..f2ac04825
Binary files /dev/null and b/public/images/docs/scientists/dB2LRbj.jpg differ
diff --git a/public/images/docs/scientists/jA8hHMpm.jpg b/public/images/docs/scientists/jA8hHMpm.jpg
new file mode 100644
index 000000000..ba2168f85
Binary files /dev/null and b/public/images/docs/scientists/jA8hHMpm.jpg differ
diff --git a/public/images/docs/scientists/kxsph5Cl.jpg b/public/images/docs/scientists/kxsph5Cl.jpg
new file mode 100644
index 000000000..f33360729
Binary files /dev/null and b/public/images/docs/scientists/kxsph5Cl.jpg differ
diff --git a/public/images/docs/scientists/lICfvbD.jpg b/public/images/docs/scientists/lICfvbD.jpg
new file mode 100644
index 000000000..67393f31e
Binary files /dev/null and b/public/images/docs/scientists/lICfvbD.jpg differ
diff --git a/public/images/docs/scientists/lrWQx8ls.jpg b/public/images/docs/scientists/lrWQx8ls.jpg
new file mode 100644
index 000000000..bc0708bd0
Binary files /dev/null and b/public/images/docs/scientists/lrWQx8ls.jpg differ
diff --git a/public/images/docs/scientists/mynHUSas.jpg b/public/images/docs/scientists/mynHUSas.jpg
new file mode 100644
index 000000000..e369df8c5
Binary files /dev/null and b/public/images/docs/scientists/mynHUSas.jpg differ
diff --git a/public/images/docs/scientists/okTpbHhm.jpg b/public/images/docs/scientists/okTpbHhm.jpg
new file mode 100644
index 000000000..a96c5c03c
Binary files /dev/null and b/public/images/docs/scientists/okTpbHhm.jpg differ
diff --git a/public/images/docs/scientists/rN7hY6om.jpg b/public/images/docs/scientists/rN7hY6om.jpg
new file mode 100644
index 000000000..3c7afe1f9
Binary files /dev/null and b/public/images/docs/scientists/rN7hY6om.jpg differ
diff --git a/public/images/docs/scientists/rTqKo46l.jpg b/public/images/docs/scientists/rTqKo46l.jpg
new file mode 100644
index 000000000..4a0b3dc3b
Binary files /dev/null and b/public/images/docs/scientists/rTqKo46l.jpg differ
diff --git a/public/images/docs/scientists/szV5sdGb.jpg b/public/images/docs/scientists/szV5sdGb.jpg
new file mode 100644
index 000000000..8d6579402
Binary files /dev/null and b/public/images/docs/scientists/szV5sdGb.jpg differ
diff --git a/public/images/docs/scientists/szV5sdGs.jpg b/public/images/docs/scientists/szV5sdGs.jpg
new file mode 100644
index 000000000..fc3c34260
Binary files /dev/null and b/public/images/docs/scientists/szV5sdGs.jpg differ
diff --git a/public/images/docs/scientists/wIdGuZwm.png b/public/images/docs/scientists/wIdGuZwm.png
new file mode 100644
index 000000000..5f482def6
Binary files /dev/null and b/public/images/docs/scientists/wIdGuZwm.png differ
diff --git a/public/images/docs/scientists/yXOvdOSs.jpg b/public/images/docs/scientists/yXOvdOSs.jpg
new file mode 100644
index 000000000..0a3269510
Binary files /dev/null and b/public/images/docs/scientists/yXOvdOSs.jpg differ
diff --git a/public/images/docs/scientists/z08o2TS.jpg b/public/images/docs/scientists/z08o2TS.jpg
new file mode 100644
index 000000000..42a0a00ef
Binary files /dev/null and b/public/images/docs/scientists/z08o2TS.jpg differ
diff --git a/src/content/blog/2023/03/16/introducing-react-dev.md b/src/content/blog/2023/03/16/introducing-react-dev.md
index f971ddafa..96d2a630d 100644
--- a/src/content/blog/2023/03/16/introducing-react-dev.md
+++ b/src/content/blog/2023/03/16/introducing-react-dev.md
@@ -279,17 +279,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -317,17 +317,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -365,17 +365,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -409,17 +409,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
diff --git a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
index c3ab47fad..002dae2a9 100644
--- a/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
+++ b/src/content/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024.md
@@ -49,19 +49,19 @@ We refer to this broader collection of features as simply "Actions". Actions all
The `action` function can operate synchronously or asynchronously. You can define them on the client side using standard JavaScript or on the server with the [`'use server'`](/reference/rsc/use-server) directive. When using an action, React will manage the life cycle of the data submission for you, providing hooks like [`useFormStatus`](/reference/react-dom/hooks/useFormStatus), and [`useActionState`](/reference/react/useActionState) to access the current state and response of the form action.
-By default, Actions are submitted within a [transition](/reference/react/useTransition), keeping the current page interactive while the action is processing. Since Actions support async functions, we've also added the ability to use `async/await` in transitions. This allows you to show pending UI with the `isPending` state of a transition when an async request like `fetch` starts, and show the pending UI all the way through the update being applied.
+By default, Actions are submitted within a [transition](/reference/react/useTransition), keeping the current page interactive while the action is processing. Since Actions support async functions, we've also added the ability to use `async/await` in transitions. This allows you to show pending UI with the `isPending` state of a transition when an async request like `fetch` starts, and show the pending UI all the way through the update being applied.
Alongside Actions, we're introducing a feature named [`useOptimistic`](/reference/react/useOptimistic) for managing optimistic state updates. With this hook, you can apply temporary updates that are automatically reverted once the final state commits. For Actions, this allows you to optimistically set the final state of the data on the client, assuming the submission is successful, and revert to the value for data received from the server. It works using regular `async`/`await`, so it works the same whether you're using `fetch` on the client, or a Server Action from the server.
Library authors can implement custom `action={fn}` props in their own components with `useTransition`. Our intent is for libraries to adopt the Actions pattern when designing their component APIs, to provide a consistent experience for React developers. For example, if your library provides a `` component, consider also exposing a `` API, too.
-While we initially focused on Server Actions for client-server data transfer, our philosophy for React is to provide the same programming model across all platforms and environments. When possible, if we introduce a feature on the client, we aim to make it also work on the server, and vice versa. This philosophy allows us to create a single set of APIs that work no matter where your app runs, making it easier to upgrade to different environments later.
+While we initially focused on Server Actions for client-server data transfer, our philosophy for React is to provide the same programming model across all platforms and environments. When possible, if we introduce a feature on the client, we aim to make it also work on the server, and vice versa. This philosophy allows us to create a single set of APIs that work no matter where your app runs, making it easier to upgrade to different environments later.
Actions are now available in the Canary channel and will ship in the next release of React.
## New Features in React Canary {/*new-features-in-react-canary*/}
-We introduced [React Canaries](/blog/2023/05/03/react-canaries) as an option to adopt individual new stable features as soon as their design is close to final, before they’re released in a stable semver version.
+We introduced [React Canaries](/blog/2023/05/03/react-canaries) as an option to adopt individual new stable features as soon as their design is close to final, before they’re released in a stable semver version.
Canaries are a change to the way we develop React. Previously, features would be researched and built privately inside of Meta, so users would only see the final polished product when released to Stable. With Canaries, we’re building in public with the help of the community to finalize features we share in the React Labs blog series. This means you hear about new features sooner, as they’re being finalized instead of after they’re complete.
@@ -75,7 +75,7 @@ React Server Components, Asset Loading, Document Metadata, and Actions have all
- **Actions**: As shared above, we've added Actions to manage sending data from the client to the server. You can add `action` to elements like [``](/reference/react-dom/components/form), access the status with [`useFormStatus`](/reference/react-dom/hooks/useFormStatus), handle the result with [`useActionState`](/reference/react/useActionState), and optimistically update the UI with [`useOptimistic`](/reference/react/useOptimistic).
-Since all of these features work together, it’s difficult to release them in the Stable channel individually. Releasing Actions without the complementary hooks for accessing form states would limit the practical usability of Actions. Introducing React Server Components without integrating Server Actions would complicate modifying data on the server.
+Since all of these features work together, it’s difficult to release them in the Stable channel individually. Releasing Actions without the complementary hooks for accessing form states would limit the practical usability of Actions. Introducing React Server Components without integrating Server Actions would complicate modifying data on the server.
Before we can release a set of features to the Stable channel, we need to ensure they work cohesively and developers have everything they need to use them in production. React Canaries allow us to develop these features individually, and release the stable APIs incrementally until the entire feature set is complete.
diff --git a/src/content/blog/2024/04/25/react-19-upgrade-guide.md b/src/content/blog/2024/04/25/react-19-upgrade-guide.md
index cb83a6176..1823ebdfb 100644
--- a/src/content/blog/2024/04/25/react-19-upgrade-guide.md
+++ b/src/content/blog/2024/04/25/react-19-upgrade-guide.md
@@ -20,7 +20,7 @@ The improvements added to React 19 require some breaking changes, but we've work
#### React 18.3 has also been published {/*react-18-3*/}
-To help make the upgrade to React 19 easier, we've published a `react@18.3` release that is identical to 18.2 but adds warnings for deprecated APIs and other changes that are needed for React 19.
+To help make the upgrade to React 19 easier, we've published a `react@18.3` release that is identical to 18.2 but adds warnings for deprecated APIs and other changes that are needed for React 19.
We recommend upgrading to React 18.3 first to help identify any issues before upgrading to React 19.
@@ -109,17 +109,17 @@ npx codemod@latest react/19/migration-recipe
```
This will run the following codemods from `react-codemod`:
-- [`replace-reactdom-render`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-reactdom-render)
+- [`replace-reactdom-render`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-reactdom-render)
- [`replace-string-ref`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-string-ref)
- [`replace-act-import`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-act-import)
-- [`replace-use-form-state`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-use-form-state)
+- [`replace-use-form-state`](https://github.com/reactjs/react-codemod?tab=readme-ov-file#replace-use-form-state)
- [`prop-types-typescript`](https://github.com/reactjs/react-codemod#react-proptypes-to-prop-types)
This does not include the TypeScript changes. See [TypeScript changes](#typescript-changes) below.
-Changes that include a codemod include the command below.
+Changes that include a codemod include the command below.
For a list of all available codemods, see the [`react-codemod` repo](https://github.com/reactjs/react-codemod).
@@ -127,7 +127,7 @@ For a list of all available codemods, see the [`react-codemod` repo](https://git
### Errors in render are not re-thrown {/*errors-in-render-are-not-re-thrown*/}
-In previous versions of React, errors thrown during render were caught and rethrown. In DEV, we would also log to `console.error`, resulting in duplicate error logs.
+In previous versions of React, errors thrown during render were caught and rethrown. In DEV, we would also log to `console.error`, resulting in duplicate error logs.
In React 19, we've [improved how errors are handled](/blog/2024/04/25/react-19#error-handling) to reduce duplication by not re-throwing:
@@ -348,7 +348,7 @@ npm install react-shallow-renderer --save-dev
##### Please reconsider shallow rendering {/*please-reconsider-shallow-rendering*/}
-Shallow rendering depends on React internals and can block you from future upgrades. We recommend migrating your tests to [@testing-library/react](https://testing-library.com/docs/react-testing-library/intro/) or [@testing-library/react-native](https://testing-library.com/docs/react-native-testing-library/intro).
+Shallow rendering depends on React internals and can block you from future upgrades. We recommend migrating your tests to [@testing-library/react](https://testing-library.com/docs/react-testing-library/intro/) or [@testing-library/react-native](https://testing-library.com/docs/react-native-testing-library/intro).
@@ -465,7 +465,7 @@ npx codemod@latest react/19/replace-reactdom-render
#### Removed: `ReactDOM.findDOMNode` {/*removed-reactdom-finddomnode*/}
-`ReactDOM.findDOMNode` was [deprecated in October 2018 (v16.6.0)](https://legacy.reactjs.org/blog/2018/10/23/react-v-16-6.html#deprecations-in-strictmode).
+`ReactDOM.findDOMNode` was [deprecated in October 2018 (v16.6.0)](https://legacy.reactjs.org/blog/2018/10/23/react-v-16-6.html#deprecations-in-strictmode).
We're removing `findDOMNode` because it was a legacy escape hatch that was slow to execute, fragile to refactoring, only returned the first child, and broke abstraction levels (see more [here](https://legacy.reactjs.org/docs/strict-mode.html#warning-about-deprecated-finddomnode-usage)). You can replace `ReactDOM.findDOMNode` with [DOM refs](/learn/manipulating-the-dom-with-refs):
@@ -551,7 +551,7 @@ This change means Suspense fallbacks display faster, while still warming lazy re
### UMD builds removed {/*umd-builds-removed*/}
-UMD was widely used in the past as a convenient way to load React without a build step. Now, there are modern alternatives for loading modules as scripts in HTML documents. Starting with React 19, React will no longer produce UMD builds to reduce the complexity of its testing and release process.
+UMD was widely used in the past as a convenient way to load React without a build step. Now, there are modern alternatives for loading modules as scripts in HTML documents. Starting with React 19, React will no longer produce UMD builds to reduce the complexity of its testing and release process.
To load React 19 with a script tag, we recommend using an ESM-based CDN such as [esm.sh](https://esm.sh/).
@@ -569,7 +569,7 @@ This release includes changes to React internals that may impact libraries that
Based on our [Versioning Policy](https://react.dev/community/versioning-policy#what-counts-as-a-breaking-change), these updates are not listed as breaking changes, and we are not including docs for how to upgrade them. The recommendation is to remove any code that depends on internals.
-To reflect the impact of using internals, we have renamed the `SECRET_INTERNALS` suffix to:
+To reflect the impact of using internals, we have renamed the `SECRET_INTERNALS` suffix to:
`_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE`
diff --git a/src/content/blog/2024/12/05/react-19.md b/src/content/blog/2024/12/05/react-19.md
index 4e9aad8e8..749646458 100644
--- a/src/content/blog/2024/12/05/react-19.md
+++ b/src/content/blog/2024/12/05/react-19.md
@@ -59,7 +59,7 @@ function UpdateName({}) {
if (error) {
setError(error);
return;
- }
+ }
redirect("/path");
};
@@ -92,7 +92,7 @@ function UpdateName({}) {
if (error) {
setError(error);
return;
- }
+ }
redirect("/path");
})
};
@@ -176,7 +176,7 @@ const [error, submitAction, isPending] = useActionState(
);
```
-`useActionState` accepts a function (the "Action"), and returns a wrapped Action to call. This works because Actions compose. When the wrapped Action is called, `useActionState` will return the last result of the Action as `data`, and the pending state of the Action as `pending`.
+`useActionState` accepts a function (the "Action"), and returns a wrapped Action to call. This works because Actions compose. When the wrapped Action is called, `useActionState` will return the last result of the Action as `data`, and the pending state of the Action as `pending`.
@@ -308,7 +308,7 @@ function Heading({children}) {
if (children == null) {
return null;
}
-
+
// This would not work with useContext
// because of the early return.
const theme = use(ThemeContext);
@@ -330,7 +330,7 @@ We've added two new APIs to `react-dom/static` for static site generation:
- [`prerender`](/reference/react-dom/static/prerender)
- [`prerenderToNodeStream`](/reference/react-dom/static/prerenderToNodeStream)
-These new APIs improve on `renderToString` by waiting for data to load for static HTML generation. They are designed to work with streaming environments like Node.js Streams and Web Streams. For example, in a Web Stream environment, you can prerender a React tree to static HTML with `prerender`:
+These new APIs improve on `renderToString` by waiting for data to load for static HTML generation. They are designed to work with streaming environments like Node.js Streams and Web Streams. For example, in a Web Stream environment, you can prerender a React tree to static HTML with `prerender`:
```js
import { prerender } from 'react-dom/static';
@@ -355,14 +355,14 @@ For more information, see [React DOM Static APIs](/reference/react-dom/static).
Server Components are a new option that allows rendering components ahead of time, before bundling, in an environment separate from your client application or SSR server. This separate environment is the "server" in React Server Components. Server Components can run once at build time on your CI server, or they can be run for each request using a web server.
-React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/creating-a-react-app#which-features-make-up-the-react-teams-full-stack-architecture-vision).
+React 19 includes all of the React Server Components features included from the Canary channel. This means libraries that ship with Server Components can now target React 19 as a peer dependency with a `react-server` [export condition](https://github.com/reactjs/rfcs/blob/main/text/0227-server-module-conventions.md#react-server-conditional-exports) for use in frameworks that support the [Full-stack React Architecture](/learn/creating-a-react-app#which-features-make-up-the-react-teams-full-stack-architecture-vision).
#### How do I build support for Server Components? {/*how-do-i-build-support-for-server-components*/}
-While React Server Components in React 19 are stable and will not break between minor versions, the underlying APIs used to implement a React Server Components bundler or framework do not follow semver and may break between minors in React 19.x.
+While React Server Components in React 19 are stable and will not break between minor versions, the underlying APIs used to implement a React Server Components bundler or framework do not follow semver and may break between minors in React 19.x.
To support React Server Components as a bundler or framework, we recommend pinning to a specific React version, or using the Canary release. We will continue working with bundlers and frameworks to stabilize the APIs used to implement React Server Components in the future.
@@ -497,7 +497,7 @@ function App({children}) {
{children}
- );
+ );
}
```
@@ -521,7 +521,7 @@ We now support returning a cleanup function from `ref` callbacks:
/>
```
-When the component unmounts, React will call the cleanup function returned from the `ref` callback. This works for DOM refs, refs to class components, and `useImperativeHandle`.
+When the component unmounts, React will call the cleanup function returned from the `ref` callback. This works for DOM refs, refs to class components, and `useImperativeHandle`.
@@ -551,7 +551,7 @@ function Search({deferredValue}) {
// On initial render the value is ''.
// Then a re-render is scheduled with the deferredValue.
const value = useDeferredValue(deferredValue, '');
-
+
return (
);
@@ -564,7 +564,7 @@ For more, see [`useDeferredValue`](/reference/react/useDeferredValue).
### Support for Document Metadata {/*support-for-metadata-tags*/}
-In HTML, document metadata tags like ``, ``, and `` are reserved for placement in the `` section of the document. In React, the component that decides what metadata is appropriate for the app may be very far from the place where you render the `` or React does not render the `` at all. In the past, these elements would need to be inserted manually in an effect, or by libraries like [`react-helmet`](https://github.com/nfl/react-helmet), and required careful handling when server rendering a React application.
+In HTML, document metadata tags like ``, ``, and `` are reserved for placement in the `` section of the document. In React, the component that decides what metadata is appropriate for the app may be very far from the place where you render the `` or React does not render the `` at all. In the past, these elements would need to be inserted manually in an effect, or by libraries like [`react-helmet`](https://github.com/nfl/react-helmet), and required careful handling when server rendering a React application.
In React 19, we're adding support for rendering document metadata tags in components natively:
@@ -726,7 +726,7 @@ In React 19, unexpected tags in the `` and `` will be skipped over,
### Better error reporting {/*error-handling*/}
-We improved error handling in React 19 to remove duplication and provide options for handling caught and uncaught errors. For example, when there's an error in render caught by an Error Boundary, previously React would throw the error twice (once for the original error, then again after failing to automatically recover), and then call `console.error` with info about where the error occurred.
+We improved error handling in React 19 to remove duplication and provide options for handling caught and uncaught errors. For example, when there's an error in render caught by an Error Boundary, previously React would throw the error twice (once for the original error, then again after failing to automatically recover), and then call `console.error` with info about where the error occurred.
This resulted in three errors for every caught error:
diff --git a/src/content/blog/2025/02/14/sunsetting-create-react-app.md b/src/content/blog/2025/02/14/sunsetting-create-react-app.md
index b0c6b8d7f..96ef3513a 100644
--- a/src/content/blog/2025/02/14/sunsetting-create-react-app.md
+++ b/src/content/blog/2025/02/14/sunsetting-create-react-app.md
@@ -11,7 +11,7 @@ February 14, 2025 by [Matt Carroll](https://twitter.com/mattcarrollcode) and [Ri
-Today, we’re deprecating [Create React App](https://create-react-app.dev/) for new apps, and encouraging existing apps to migrate to a [framework](#how-to-migrate-to-a-framework), or to [migrate to a build tool](#how-to-migrate-to-a-build-tool) like Vite, Parcel, or RSBuild.
+Today, we’re deprecating [Create React App](https://create-react-app.dev/) for new apps, and encouraging existing apps to migrate to a [framework](#how-to-migrate-to-a-framework), or to [migrate to a build tool](#how-to-migrate-to-a-build-tool) like Vite, Parcel, or RSBuild.
We’re also providing docs for when a framework isn’t a good fit for your project, you want to build your own framework, or you just want to learn how React works by [building a React app from scratch](/learn/build-a-react-app-from-scratch).
@@ -75,7 +75,7 @@ To help get started with Vite, Parcel or Rsbuild, we've added new docs for [Buil
#### Do I need a framework? {/*do-i-need-a-framework*/}
-Most apps would benefit from a framework, but there are valid cases to build a React app from scratch. A good rule of thumb is if your app needs routing, you would probably benefit from a framework.
+Most apps would benefit from a framework, but there are valid cases to build a React app from scratch. A good rule of thumb is if your app needs routing, you would probably benefit from a framework.
Just like Svelte has Sveltekit, Vue has Nuxt, and Solid has SolidStart, [React recommends using a framework](#why-we-recommend-frameworks) that fully integrates routing into features like data-fetching and code-splitting out of the box. This avoids the pain of needing to write your own complex configurations and essentially build a framework yourself.
diff --git a/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md b/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md
index dc049c78c..70e5c2e65 100644
--- a/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md
+++ b/src/content/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components.md
@@ -176,7 +176,7 @@ The patches published today prevent stringifying the Server Function source code
Secrets hardcoded in source code may be exposed, but runtime secrets such as `process.env.SECRET` are not affected.
-The scope of the exposed code is limited to the code inside the Server Function, which may include other functions depending on the amount of inlining your bundler provides.
+The scope of the exposed code is limited to the code inside the Server Function, which may include other functions depending on the amount of inlining your bundler provides.
Always verify against production bundles.
diff --git a/src/content/community/conferences.md b/src/content/community/conferences.md
index ada81a60b..2079cdd65 100644
--- a/src/content/community/conferences.md
+++ b/src/content/community/conferences.md
@@ -219,7 +219,7 @@ May 15 - 16, 2024. In-person in Henderson, NV, USA + remote
[Website](https://conf.react.dev) - [Twitter](https://twitter.com/reactjs)
### React Native Connection 2024 {/*react-native-connection-2024*/}
-April 23, 2024. In-person in Paris, France
+April 23, 2024. In-person in Paris, France
[Website](https://reactnativeconnection.io/) - [Twitter](https://twitter.com/ReactNativeConn)
@@ -261,7 +261,7 @@ October 20 & 23, 2023. In-person in London, UK + remote first interactivity (hyb
### React Brussels 2023 {/*react-brussels-2023*/}
October 13th 2023. In-person in Brussels, Belgium + Remote (hybrid)
-[Website](https://www.react.brussels/) - [Twitter](https://twitter.com/BrusselsReact) - [Videos](https://www.youtube.com/playlist?list=PL53Z0yyYnpWh85KeMomUoVz8_brrmh_aC)
+[Website](https://www.react.brussels/) - [Twitter](https://twitter.com/BrusselsReact) - [Videos](https://www.youtube.com/playlist?list=PL53Z0yyYnpWh85KeMomUoVz8_brrmh_aC)
### React India 2023 {/*react-india-2023*/}
October 5 - 7, 2023. In-person in Goa, India (hybrid event) + Oct 3 2023 - remote day
@@ -284,7 +284,7 @@ September 28 - 30, 2023. Alicante, Spain
[Website](https://reactalicante.es/) - [Twitter](https://twitter.com/reactalicante)
### RedwoodJS Conference 2023 {/*redwoodjs-conference-2023*/}
-September 26 - 29, 2023. Grants Pass, Oregon + remote (hybrid event)
+September 26 - 29, 2023. Grants Pass, Oregon + remote (hybrid event)
[Website](https://www.redwoodjsconf.com/) - [Twitter](https://twitter.com/redwoodjs)
diff --git a/src/content/community/translations.md b/src/content/community/translations.md
index 4c07e6a1e..fd49bd3e9 100644
--- a/src/content/community/translations.md
+++ b/src/content/community/translations.md
@@ -28,7 +28,7 @@ For the progress of each translation, see: [Is React Translated Yet?](https://tr
## How to contribute {/*how-to-contribute*/}
-You can contribute to the translation efforts!
+You can contribute to the translation efforts!
The community conducts the translation work for the React docs on each language-specific fork of react.dev. Typical translation work involves directly translating a Markdown file and creating a pull request. Click the "contribute" link above to the GitHub repository for your language, and follow the instructions there to help with the translation effort.
diff --git a/src/content/learn/adding-interactivity.md b/src/content/learn/adding-interactivity.md
index 33ebb9b90..9696e7e43 100644
--- a/src/content/learn/adding-interactivity.md
+++ b/src/content/learn/adding-interactivity.md
@@ -138,75 +138,75 @@ export default function Gallery() {
export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
- description: 'Colvin ağırlıklı olarak İspanyol öncesi sembollere gönderme yapan soyut temalarla bilinmesine rağmen, beyin cerrahisine saygı duruşu niteliğindeki bu devasa heykel onun en tanınmış sanat eserlerinden biridir.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'Parmak uçlarında insan beynini zarif bir şekilde tutan çapraz iki elin yer aldığı bronz bir heykel.'
+ description: 'Colvin ağırlıklı olarak Hispanik öncesi sembollere gönderme yapan soyut temalarıyla bilinse de, nöroşirürjiye bir saygı duruşu olan bu devasa heykel, onun en tanınan kamusal sanat eserlerinden biridir.',
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'İki çapraz elin, parmak uçlarında insan beynini nazikçe tuttuğu bronz bir heykel.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
- description: "Bu muazzam (75 ft. veya 23m) gümüş çiçek Buenos Aires'te bulunuyor. Akşamları veya kuvvetli rüzgarlar estiğinde yapraklarını kapatarak sabahları açarak hareket edecek şekilde tasarlanmıştır.",
- url: 'https://i.imgur.com/ZF6s192m.jpg',
- alt: 'Yansıtıcı ayna benzeri yaprakları ve güçlü organları ile devasa metalik çiçek heykeli.'
+ description: 'Bu devasa (75 ft. veya 23 m) gümüş çiçek Buenos Aires’te yer alır. Akşamları veya güçlü rüzgarlar estiğinde taç yapraklarını kapatacak, sabahları ise açacak şekilde tasarlanmıştır.',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
+ alt: 'Yansıtıcı, ayna benzeri taç yaprakları ve güçlü erkek organları olan devasa metalik bir çiçek heykeli.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
- description: 'Wilson eşitlik ve sosyal adaletin yanı sıra insanlığın temel ve manevi niteliklerine olan ilgisiyle biliniyordu. Bu devasa (7 ft. veya 2,13 m) bronz, kendisinin "evrensel insanlık duygusuyla aşılanmış sembolik bir Siyah varlığı" olarak tanımladığı şeyi temsil ediyor.',
- url: 'https://i.imgur.com/aTtVpES.jpg',
- alt: 'İnsan kafasını tasvir eden heykel her zaman mevcut ve ciddi görünüyor. Sakinlik ve dinginlik yayar.'
+ description: 'Wilson; eşitlik, sosyal adalet ve insanlığın temel ve ruhani nitelikleriyle ilgilenmesiyle biliniyordu. Bu büyük (7 ft. veya 2,13 m) bronz eser, onun "evrensel insanlık duygusuyla harmanlanmış sembolik bir Siyah varlık" olarak tanımladığı şeyi temsil eder.',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
+ alt: 'Bir insan başını tasvir eden heykel, her zaman var olan ve ağırbaşlı bir izlenim verir. Sakinlik ve huzur yayar.'
}, {
name: 'Moai',
- artist: 'Unknown Artist',
- description: "Paskalya Adası'nda, ilk Rapa Nui halkı tarafından yapılmış ve bazılarının tanrılaştırılmış ataları temsil ettiğine inanılan 1000 moai veya günümüze ulaşan anıtsal heykeller bulunmaktadır.",
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
- alt: 'Başları orantısız derecede büyük ve kasvetli yüzlere sahip üç anıtsal taş büst.'
+ artist: 'Bilinmeyen Sanatçı',
+ description: 'Paskalya Adası’nda bulunan, erken dönem Rapa Nui halkı tarafından oluşturulmuş 1.000 adet moai veya günümüze ulaşmış anıtsal heykel vardır. Bazılarına göre bunlar tanrılaştırılmış ataları temsil ediyordu.',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
+ alt: 'Orantısız derecede büyük başlara ve ciddi yüz ifadelerine sahip üç anıtsal taş büst.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
- description: "Nanalar muzaffer yaratıklardır, kadınlık ve analığın simgeleridir. Başlangıçta Saint Phalle, Nana'lar için kumaş kullanmış ve nesneler bulmuş, daha sonra daha canlı bir etki elde etmek için polyesteri kullanmıştır.",
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
- alt: 'Sevinç yayan renkli bir kostüm içinde tuhaf dans eden bir kadın figürünün büyük mozaik heykeli.'
+ description: 'Nana’lar, kadınlık ve anneliğin sembolleri olan zafer kazanmış varlıklardır. Başlangıçta Saint Phalle, Nana’lar için kumaş ve buluntu nesneler kullandı; daha sonra daha canlı bir etki elde etmek için polyesteri dahil etti.',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
+ alt: 'Renkli bir kostüm içinde neşe saçan, oyunbaz şekilde dans eden büyük bir kadın figürünün mozaik heykeli.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
- description: "Bu soyut bronz heykel, Yorkshire Heykel Parkı'nda bulunan The Family of Man serisinin bir parçasıdır. Hepworth, dünyanın gerçek temsillerini yaratmayı değil, insanlardan ve manzaralardan ilham alan soyut formlar geliştirmeyi seçti.",
- url: 'https://i.imgur.com/2heNQDcm.jpg',
- alt: 'Bir insan figürünü anımsatan, üst üste dizilmiş üç öğeden oluşan uzun bir heykel.'
+ description: 'Bu soyut bronz heykel, Yorkshire Sculpture Park’ta yer alan The Family of Man serisinin bir parçasıdır. Hepworth, dünyanın birebir temsillerini oluşturmak yerine insanlardan ve manzaralardan ilham alan soyut formlar geliştirmeyi seçti.',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
+ alt: 'Üst üste yerleştirilmiş üç öğeden oluşan ve bir insan figürünü hatırlatan uzun bir heykel.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
- description: "Dört nesildir ahşap oymacılığı yapan Fakeye'nin çalışmaları geleneksel ve çağdaş Yoruba temalarını harmanlıyordu.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
- alt: 'Desenlerle süslenmiş, ata odaklanmış bir yüze sahip bir savaşçının karmaşık ahşap heykeli.'
+ description: "Dört kuşak ahşap oymacısının soyundan gelen Fakeye’nin çalışmaları, geleneksel ve çağdaş Yoruba temalarını harmanladı.",
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
+ alt: 'Desenlerle süslenmiş bir atın üzerinde, odaklanmış yüz ifadeli bir savaşçıyı tasvir eden ayrıntılı bir ahşap heykel.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
- description: "Szapocznikow, gençliğin ve güzelliğin kırılganlığı ve geçiciliğine dair bir metafor olarak parçalanmış beden heykelleriyle tanınıyor. Bu heykel, her biri yaklaşık 1,5 metre yüksekliğinde, üst üste dizilmiş, çok gerçekçi iki büyük karnı tasvir ediyor.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
- alt: 'Heykel, klasik heykellerdeki karınlardan oldukça farklı olarak bir dizi kıvrımı andırıyor.'
+ description: "Szapocznikow, parçalanmış beden heykellerini gençliğin ve güzelliğin kırılganlığı ile geçiciliğine dair bir metafor olarak kullanmasıyla bilinir. Bu heykel, üst üste yerleştirilmiş iki oldukça gerçekçi büyük göbeği tasvir eder; her biri yaklaşık beş fit (1,5 m) uzunluğundadır.",
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
+ alt: 'Heykel, klasik heykellerdeki göbeklerden oldukça farklı olan bir kıvrım şelalesini andırır.'
}, {
name: 'Terracotta Army',
- artist: 'Unknown Artist',
- description: "Terracotta Ordusu, Çin'in ilk İmparatoru Qin Shi Huang'ın ordularını tasvir eden pişmiş toprak heykellerden oluşan bir koleksiyondur. Ordu 8.000'den fazla asker, 520 atlı, 130 savaş arabası ve 150 süvari atından oluşuyordu.",
- url: 'https://i.imgur.com/HMFmH6m.jpg',
- alt: '12 tane her biri benzersiz bir yüz ifadesine ve zırha sahip, ciddi savaşçıların pişmiş toprak heykeli.'
+ artist: 'Bilinmeyen Sanatçı',
+ description: 'Terracotta Army, Çin’in ilk İmparatoru Qin Shi Huang’ın ordularını tasvir eden pişmiş toprak heykellerden oluşan bir koleksiyondur. Ordu; 8.000’den fazla asker, 520 atlı 130 savaş arabası ve 150 süvari atından oluşuyordu.',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
+ alt: 'Her biri kendine özgü yüz ifadesine ve zırha sahip, ciddi görünümlü savaşçılardan oluşan 12 pişmiş toprak heykel.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
- description: "Nevelson, daha sonra anıtsal yapılara dönüştüreceği New York şehrinin enkazından nesneleri temizlemesiyle tanınıyordu. Bu eserinde karyola direği, hokkabazlık iğnesi ve koltuk parçası gibi farklı parçaları kullanarak Kübizm'in geometrik mekan ve biçim soyutlamasının etkisini yansıtan kutulara çivileyip yapıştırdı.",
- url: 'https://i.imgur.com/rN7hY6om.jpg',
- alt: 'Bireysel unsurların başlangıçta ayırt edilemediği siyah mat bir heykel.'
+ description: 'Nevelson, New York City enkazından nesneler toplaması ve bunları daha sonra anıtsal yapılara dönüştürmesiyle biliniyordu. Bu eserde; yatak direği, jonglör labutu ve koltuk parçası gibi birbirinden farklı parçaları kullandı, bunları kutuların içine çivileyip yapıştırarak Kübizmin mekan ve form üzerindeki geometrik soyutlama etkisini yansıttı.',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
+ alt: 'Tek tek öğelerin ilk bakışta ayırt edilemediği siyah mat bir heykel.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
- description: 'Shettar geleneksel ile moderni, doğal ile endüstriyel olanı birleştiriyor. Sanatı insan ve doğa arasındaki ilişkiye odaklanıyor. Çalışmaları hem soyut hem de mecazi olarak ilgi çekici, yerçekimine meydan okuyan ve "beklenmedik malzemelerin ince bir sentezi" olarak tanımlanıyor.',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
- alt: 'Beton duvara monte edilmiş ve yere inen soluk tel benzeri bir heykel. Hafifmiş gibi görünüyor.'
+ description: 'Shettar geleneksel ile moderni, doğal olan ile endüstriyel olanı birleştirir. Sanatı, insan ve doğa arasındaki ilişkiye odaklanır. Eserleri hem soyut hem figüratif açıdan etkileyici, yer çekimine meydan okuyan ve "beklenmedik malzemelerin ince bir sentezi" olarak tanımlanmıştır.',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
+ alt: 'Beton duvara monte edilmiş ve zemine doğru inen, soluk renkli tel benzeri bir heykel. Hafif görünür.'
}, {
name: 'Hippos',
- artist: 'Taipei Zoo',
- description: 'Taipei Hayvanat Bahçesi, su altındaki su aygırlarının oyun oynadığı bir Su Aygırı Meydanı yaptırdı.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
- alt: 'Setin kaldırımından sanki yüzüyormuş gibi çıkan bir grup bronz su aygırı heykeli.'
+ artist: 'Taipei Hayvanat Bahçesi',
+ description: 'Taipei Hayvanat Bahçesi, oyun oynayan suya batmış hipopotamları içeren bir Hippo Square yaptırdı.',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
+ alt: 'Sanki yüzüyormuş gibi kaldırımdan çıkan bir grup bronz hipopotam heykeli.'
}];
```
@@ -423,7 +423,7 @@ export default function Form() {
artwork: {
title: 'Blue Nana',
city: 'Hamburg',
- image: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ image: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
}
});
@@ -531,7 +531,7 @@ export default function Form() {
artwork: {
title: 'Blue Nana',
city: 'Hamburg',
- image: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ image: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
}
});
diff --git a/src/content/learn/build-a-react-app-from-scratch.md b/src/content/learn/build-a-react-app-from-scratch.md
index 8a2142cf9..182ad54bb 100644
--- a/src/content/learn/build-a-react-app-from-scratch.md
+++ b/src/content/learn/build-a-react-app-from-scratch.md
@@ -12,7 +12,7 @@ If your app has constraints not well-served by existing frameworks, you prefer t
#### Consider using a framework {/*consider-using-a-framework*/}
-Starting from scratch is an easy way to get started using React, but a major tradeoff to be aware of is that going this route is often the same as building your own adhoc framework. As your requirements evolve, you may need to solve more framework-like problems that our recommended frameworks already have well developed and supported solutions for.
+Starting from scratch is an easy way to get started using React, but a major tradeoff to be aware of is that going this route is often the same as building your own adhoc framework. As your requirements evolve, you may need to solve more framework-like problems that our recommended frameworks already have well developed and supported solutions for.
For example, if in the future your app needs support for server-side rendering (SSR), static site generation (SSG), and/or React Server Components (RSC), you will have to implement those on your own. Similarly, future React features that require integrating at the framework level will have to be implemented on your own if you want to use them.
@@ -132,12 +132,12 @@ Since the build tool you select only supports single page apps (SPAs), you'll ne
* **React Server Components (RSC)** lets you mix build-time, server-only, and interactive components in a single React tree. RSC can improve performance, but it currently requires deep expertise to set up and maintain. See [Parcel's RSC examples](https://github.com/parcel-bundler/rsc-examples).
-Your rendering strategies need to integrate with your router so apps built with your framework can choose the rendering strategy on a per-route level. This will enable different rendering strategies without having to rewrite your whole app. For example, the landing page for your app might benefit from being statically generated (SSG), while a page with a content feed might perform best with server-side rendering.
+Your rendering strategies need to integrate with your router so apps built with your framework can choose the rendering strategy on a per-route level. This will enable different rendering strategies without having to rewrite your whole app. For example, the landing page for your app might benefit from being statically generated (SSG), while a page with a content feed might perform best with server-side rendering.
Using the right rendering strategy for the right routes can decrease the time it takes for the first byte of content to be loaded ([Time to First Byte](https://web.dev/articles/ttfb)), the first piece of content to render ([First Contentful Paint](https://web.dev/articles/fcp)), and the largest visible content of the app to render ([Largest Contentful Paint](https://web.dev/articles/lcp)).
### And more... {/*and-more*/}
-These are just a few examples of the features a new app will need to consider when building from scratch. Many limitations you'll hit can be difficult to solve as each problem is interconnected with the others and can require deep expertise in problem areas you may not be familiar with.
+These are just a few examples of the features a new app will need to consider when building from scratch. Many limitations you'll hit can be difficult to solve as each problem is interconnected with the others and can require deep expertise in problem areas you may not be familiar with.
-If you don't want to solve these problems on your own, you can [get started with a framework](/learn/creating-a-react-app) that provides these features out of the box.
+If you don't want to solve these problems on your own, you can [get started with a framework](/learn/creating-a-react-app) that provides these features out of the box.
diff --git a/src/content/learn/building-a-react-framework.md b/src/content/learn/building-a-react-framework.md
index 50e34ff65..cd84c0a68 100644
--- a/src/content/learn/building-a-react-framework.md
+++ b/src/content/learn/building-a-react-framework.md
@@ -20,7 +20,7 @@ For a list of recommended frameworks, check out [Creating a React App](/learn/cr
Building a framework is a large undertaking that often requires expertise in many different areas. Understanding your goals and requirements before starting to build your own framework can help guide your development process and save a considerable amount of time.
-For example, if you need to build a framework that integrates with a specific system or infrastructure, it's important to understand the features and limitations of those systems. Understanding your constraints can help guide your framework development process.
+For example, if you need to build a framework that integrates with a specific system or infrastructure, it's important to understand the features and limitations of those systems. Understanding your constraints can help guide your framework development process.
If you are building your own framework to learn, using popular tools like Vite and React Router can be a good starting point and let you focus on how to combine different tools to build a framework.
@@ -134,4 +134,4 @@ There are many other problems that users need to solve like:
- Static site generation
- Server-side rendering
-Many of these problems individually can be difficult as each problem is interconnected with the others and can require deep expertise in problem areas you may not be familiar with. If you don't want to solve these problems on your own, you can [get started with a framework](/learn/creating-a-react-app) that provides these features out of the box.
+Many of these problems individually can be difficult as each problem is interconnected with the others and can require deep expertise in problem areas you may not be familiar with. If you don't want to solve these problems on your own, you can [get started with a framework](/learn/creating-a-react-app) that provides these features out of the box.
diff --git a/src/content/learn/choosing-the-state-structure.md b/src/content/learn/choosing-the-state-structure.md
index efd8a18c1..470c9bbf8 100644
--- a/src/content/learn/choosing-the-state-structure.md
+++ b/src/content/learn/choosing-the-state-structure.md
@@ -458,7 +458,7 @@ export default function Menu() {
return (
<>
-
@@ -52,7 +52,7 @@ export default function PackingList() {
-Bazı `Item` bileşenlerinin `isPacked` prop'unun `false` (`yanlış`) yerine `true` (`doğru`) olduğuna dikkat edin. Eğer bileşen prop'u `isPacked={true}` ise eşyaların yanında bir tik (✅) işareti olmalı.
+Bazı `Item` bileşenlerinin `isPacked` prop'unun `false` (`yanlış`) yerine `true` (`doğru`) olduğuna dikkat edin. Eğer bileşen prop'u `isPacked={true}` ise eşyaların yanında bir tik (✅) işareti olmalı.
Bunu bir [`if`/`else` ifadesi](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else) olarak şöyle yazabilirsiniz:
@@ -80,17 +80,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -132,17 +132,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -236,17 +236,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -290,17 +290,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -370,17 +370,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -416,17 +416,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -445,7 +445,7 @@ Eğer JavaScript diline aşina değilseniz, bu yöntem çeşitliliği ilk başta
* Bir JSX ifadesini koşullu olarak bir değişkene atayabilir ve süslü parantez kullanarak ("{}") başka bir JSX'in içine dahil edebilirsiniz.
* JSX'te, `{cond ? : }` ifadesi şu anlama gelmektedir: *"eğer `cond` varsa, ``'yı render et, aksi halde ``'yi render et"*.
* JSX'te, `{cond && }` ifadesi şu anlama gelmektedir: *"eğer `cond` varsa, ``'yı render et, aksi halde hiçbir şey render etme"*.
-* Kod tabanlarında bu kısayolları görmek yaygındır, ancak kendiniz düz `if` ifadesini tercih edebilirsiniz.
+* Kod tabanlarında bu kısayolları görmek yaygındır, ancak kendiniz düz `if` ifadesini tercih edebilirsiniz.
@@ -473,17 +473,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -511,17 +511,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -559,17 +559,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -603,17 +603,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
diff --git a/src/content/learn/creating-a-react-app.md b/src/content/learn/creating-a-react-app.md
index b897b2e58..978b9c004 100644
--- a/src/content/learn/creating-a-react-app.md
+++ b/src/content/learn/creating-a-react-app.md
@@ -111,7 +111,7 @@ Server Components and Suspense are React features rather than Next.js features.
If your app has constraints not well-served by existing frameworks, you prefer to build your own framework, or you just want to learn the basics of a React app, there are other options available for starting a React project from scratch.
-Starting from scratch gives you more flexibility, but does require that you make choices on which tools to use for routing, data fetching, and other common usage patterns. It's a lot like building your own framework, instead of using a framework that already exists. The [frameworks we recommend](#full-stack-frameworks) have built-in solutions for these problems.
+Starting from scratch gives you more flexibility, but does require that you make choices on which tools to use for routing, data fetching, and other common usage patterns. It's a lot like building your own framework, instead of using a framework that already exists. The [frameworks we recommend](#full-stack-frameworks) have built-in solutions for these problems.
If you want to build your own solutions, see our guide to [build a React app from Scratch](/learn/build-a-react-app-from-scratch) for instructions on how to set up a new React project starting with a build tool like [Vite](https://vite.dev/), [Parcel](https://parceljs.org/), or [RSbuild](https://rsbuild.dev/).
diff --git a/src/content/learn/describing-the-ui.md b/src/content/learn/describing-the-ui.md
index cfc7045bf..7f0f8c6e7 100644
--- a/src/content/learn/describing-the-ui.md
+++ b/src/content/learn/describing-the-ui.md
@@ -18,7 +18,7 @@ React, kullanıcı arayüzleri (UI) render etmek için kullanılan bir JavaScrip
* [Bileşenleri koşullu olarak nasıl render edebilirim](/learn/conditional-rendering)
* [Birden çok bileşeni aynı anda nasıl render edebilirim](/learn/rendering-lists)
* [Bileşenleri saf tutarak kafa karışıklığına neden olan hatalardan nasıl kaçınılır](/learn/keeping-components-pure)
-* [Kullanıcı arayüzünüzü ağaçlar olarak anlamak neden yararlıdır](/learn/understanding-your-ui-as-a-tree)
+* [Kullanıcı arayüzünüzü ağaçlar olarak anlamak neden yararlıdır](/learn/understanding-your-ui-as-a-tree)
@@ -32,7 +32,7 @@ React uygulamaları, *bileşenler* adı verilen izole kullanıcı arayüzü par
function Profile() {
return (
);
@@ -98,7 +98,7 @@ export default function Gallery() {
export default function Profile() {
return (
);
@@ -131,7 +131,7 @@ export default function TodoList() {
// Bu tam olarak işe yaramaz!
Hedy Lamarr'ın Yapılacakları
@@ -160,7 +160,7 @@ export default function TodoList() {
<>
Hedy Lamarr'ın Yapılacakları
@@ -207,7 +207,7 @@ export default function TodoList() {
{person.name}'nın Yapılacaklası
@@ -282,7 +282,7 @@ function Card({ children }) {
```js src/utils.js
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
@@ -435,7 +435,7 @@ export const people = [{
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
's.jpg'
);
@@ -526,9 +526,9 @@ Bileşenlerin saf, öngörülebilir fonksiyonlar olarak nasıl yazılacağını
## Arayüzünüzü bir ağaç olarak düşünün {/*your-ui-as-a-tree*/}
-React, bileşenler ve modüller arasındaki ilişkileri modellemek için ağaçları kullanır.
+React, component’ler ve module’ler arasındaki ilişkileri modellemek için tree’leri kullanır.
-React render ağacı, bileşenler arasındaki üst ve alt ilişkisinin bir temsilidir.
+Bir React render tree, component’ler arasındaki parent ve child ilişkisinin bir temsilidir.
@@ -538,7 +538,7 @@ React render ağacı, bileşenler arasındaki üst ve alt ilişkisinin bir temsi
Ağacın tepesine, kök bileşene yakın bileşenler üst düzey bileşenler olarak kabul edilir. Alt elemanı olmayan bileşenler yaprak bileşenlerdir. Bileşenlerin bu şekilde kategorize edilmesi, veri akışını ve render etme performansını anlamak için kullanışlıdır.
-JavaScript modülleri arasındaki ilişkiyi modellemek, uygulamanızı anlamanın bir başka yararlı yoludur. Bunu modül bağımlılık ağacı olarak adlandırıyoruz.
+JavaScript module’leri arasındaki ilişkiyi modellemek de app’inizi anlamanın başka bir faydalı yoludur. Buna module dependency tree diyoruz.
@@ -546,7 +546,7 @@ JavaScript modülleri arasındaki ilişkiyi modellemek, uygulamanızı anlamanı
-Bağımlılık ağacı genellikle derleme araçları tarafından istemcinin indirmesi ve renderlaması için ilgili tüm JavaScript kodunu paketlemek için kullanılır. Büyük bir paket boyutu, React uygulamaları için kullanıcı deneyimini geriletir. Modül bağımlılık ağacını anlamak, bu tür sorunları ayıklamak için yardımcı olur.
+Bir dependency tree, genellikle build tools tarafından client’ın indirip render edebilmesi için ilgili tüm JavaScript code’unu bundle etmek amacıyla kullanılır. Büyük bundle size, React app’lerinde user experience’ı kötüleştirir. Module dependency tree’yi anlamak, bu tür sorunları debug etmek için faydalıdır.
diff --git a/src/content/learn/editor-setup.md b/src/content/learn/editor-setup.md
index 2b744197a..3b2acf2dc 100644
--- a/src/content/learn/editor-setup.md
+++ b/src/content/learn/editor-setup.md
@@ -31,9 +31,9 @@ Bazı düzenleyiciler bu özelliklerle birlikte gelir, ancak diğerleri bir ekle
### Linting {/*linting*/}
-Kod linter araçları kodunuzu yazarken problemleri bulmanızı ve düzeltmenizi sağlar. [ESLint](https://eslint.org/) popüler bir açık kaynak JavaScript linter aracıdır.
+Code linter’ları, siz code yazarken code’unuzdaki problemleri bulur ve bunları erken aşamada fix etmenize yardımcı olur. [ESLint](https://eslint.org/), JavaScript için popüler, open source bir linter’dır.
-* [React için önerilen ESLint ayarlarını kurmak](https://www.npmjs.com/package/eslint-config-react-app) ([Node'un yüklü](https://nodejs.org/en/download/current/)olduğundan emin olun!)
+* [React için önerilen ESLint ayarlarını kurmak](https://www.npmjs.com/package/eslint-config-react-app) ([Node'un yüklü](https://nodejs.org/en/download/current/)olduğundan emin olun!)
* [ESLint'i, VSCode'a resmi eklenti ile entegre edin](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
** [`eslint-plugin-react-hooks`](https://www.npmjs.com/package/eslint-plugin-react-hooks) kurallarını projeniz için etkinleştirdiğinizden emin olun.
diff --git a/src/content/learn/escape-hatches.md b/src/content/learn/escape-hatches.md
index 9035d070c..750a3e03e 100644
--- a/src/content/learn/escape-hatches.md
+++ b/src/content/learn/escape-hatches.md
@@ -227,7 +227,7 @@ function Form() {
}
```
-Ancak, harici sistemler ile senkronize etmek için Efektlere ihtiyacınız vardır.
+Ancak external system’lerle senkronize olmak için Effect’lere *gerçekten* ihtiyacınız vardır.
@@ -382,7 +382,7 @@ export default function App() {
>
);
@@ -515,7 +515,7 @@ export default function App() {
>
);
diff --git a/src/content/learn/importing-and-exporting-components.md b/src/content/learn/importing-and-exporting-components.md
index 80a05120d..6688f9284 100644
--- a/src/content/learn/importing-and-exporting-components.md
+++ b/src/content/learn/importing-and-exporting-components.md
@@ -28,7 +28,7 @@ Bileşenlerin büyüsü yeniden kullanılabilirliklerinde yatar: diğer bileşen
function Profile() {
return (
);
@@ -81,7 +81,7 @@ export default function App() {
function Profile() {
return (
);
@@ -109,7 +109,7 @@ Bu örneğin iki farklı bileşen dosyasına nasıl ayrıldığına dikkat edini
1. `Gallery.js`:
- Sadece aynı dosya içerisinde kullanılan ve dışa aktarılmayan `Profile` bileşenini tanımlar.
- - **Varsayılan dışa aktarma** olarak `Gallery` bileşenini dışa aktarır.
+ - **Varsayılan dışa aktarma** olarak `Gallery` bileşenini dışa aktarır.
2. `App.js`:
- `Gallery.js` dosyasından **varsayılan içe aktarma** olarak `Gallery` bileşenini içe aktarır.
- **Varsayılan dışa aktarma** olarak `App` bileşenini dışa aktarır.
@@ -119,7 +119,7 @@ Bu örneğin iki farklı bileşen dosyasına nasıl ayrıldığına dikkat edini
`.js` dosya uzantısını kullanmayan dosyalarla karşılaşabilirsiniz:
-```js
+```js
import Gallery from './Gallery';
```
@@ -199,7 +199,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -238,7 +238,7 @@ Artık varsayılan ve adlandırılmış dışa aktarmaları bir arada kullanıyo
Bu sayfada öğrendikleriniz:
* Kök bileşeni nedir
-* Bir bileşen içe ve dışa nasıl aktarılır
+* Bir bileşen içe ve dışa nasıl aktarılır
* Varsayılan ve adlandırılmış içe ve dışa aktarmalar ne zaman ve nasıl kullanılmalıdır
* Aynı dosya içerisinden birden fazla bileşen nasıl dışarı aktarılabilir
@@ -250,7 +250,7 @@ Bu sayfada öğrendikleriniz:
#### Bileşenleri daha fazla ayırın {/*split-the-components-further*/}
-Şu anda Gallery.js, hem `Profile`'i hem de `Gallery`i dışa aktarıyor, bu biraz kafa karıştıcı.
+Şu anda Gallery.js, hem `Profile`'i hem de `Gallery`i dışa aktarıyor, bu biraz kafa karıştıcı.
`Profile` bileşenini kendi `Profile.js` dosyasına taşıyınız, ve sonrasında `App` bileşenini sırasıyla `` ve `` render edecek şekilde değiştiriniz.
@@ -288,7 +288,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -356,7 +356,7 @@ export default function Gallery() {
export function Profile() {
return (
);
@@ -406,7 +406,7 @@ export default function Gallery() {
export default function Profile() {
return (
);
diff --git a/src/content/learn/index.md b/src/content/learn/index.md
index 2420afa06..efd2cba13 100644
--- a/src/content/learn/index.md
+++ b/src/content/learn/index.md
@@ -143,7 +143,7 @@ JSX süslü parentezleri içine daha karmaşık ifadeler koyabilirsiniz, örneğ
```js
const user = {
name: 'Hedy Lamarr',
- imageUrl: 'https://i.imgur.com/yXOvdOSs.jpg',
+ imageUrl: 'https://react.dev/images/docs/scientists/yXOvdOSs.jpg',
imageSize: 90,
};
diff --git a/src/content/learn/javascript-in-jsx-with-curly-braces.md b/src/content/learn/javascript-in-jsx-with-curly-braces.md
index 50cf92c91..a9c6bd166 100644
--- a/src/content/learn/javascript-in-jsx-with-curly-braces.md
+++ b/src/content/learn/javascript-in-jsx-with-curly-braces.md
@@ -29,7 +29,7 @@ export default function Avatar() {
return (
);
@@ -42,7 +42,7 @@ export default function Avatar() {
-Burada, `"https://i.imgur.com/7vQD0fPs.jpg"` ve `"Gregorio Y. Zara"` string olarak iletildi.
+Burada, `"https://react.dev/images/docs/scientists/7vQD0fPs.jpg"` ve `"Gregorio Y. Zara"` string olarak pass ediliyor.
Ancak `src` veya `alt` metnini dinamik olarak belirtmek isterseniz ne olur? **`" `ve` "` yerine `{ `ve` }` ile değiştirerek JavaScript'ten bir değer** kullanabilirsiniz:
@@ -50,7 +50,7 @@ Ancak `src` veya `alt` metnini dinamik olarak belirtmek isterseniz ne olur? **`
```js
export default function Avatar() {
- const avatar = 'https://i.imgur.com/7vQD0fPs.jpg';
+ const avatar = 'https://react.dev/images/docs/scientists/7vQD0fPs.jpg';
const description = 'Gregorio Y. Zara';
return (
{person.name}'nın Yapılacakları
@@ -267,7 +267,7 @@ export default function TodoList() {
{person}'nın Yapılacakları
@@ -288,7 +288,7 @@ body > div > div { padding: 20px; }
-Sorunu bulabilir misin ?
+Sorunu bulabilir misin ?
Süslü parantezlerin içine ne koyduğumuza bakalım. Oraya doğru şeyi mi koyuyoruz?
@@ -314,7 +314,7 @@ export default function TodoList() {
{person.name}'nın Yapılacakları
@@ -358,7 +358,7 @@ export default function TodoList() {
{person.name}'nın Yapılacakları
@@ -388,7 +388,7 @@ Resim URL'ini `person.imageUrl` adlı bir özelliğe taşıyın ve süslü paran
```js
const person = {
name: 'Gregorio Y. Zara',
- imageUrl: "https://i.imgur.com/7vQD0fPs.jpg",
+ imageUrl: "https://react.dev/images/docs/scientists/7vQD0fPs.jpg",
theme: {
backgroundColor: 'black',
color: 'pink'
@@ -428,7 +428,7 @@ body > div > div { padding: 20px; }
Aşağıdaki objede, tam resim URL'si dört parçaya bölünmüştür: temel URL, `imageId`, `imageSize` ve dosya uzantısı.
-Resim URL'sini bu özellikleri bir araya getirecek şekilde istiyoruz: temel URL (her zaman `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`) ve dosya uzantısı (her zaman `'.jpg'`). Ancak, `` etiketinin `srcyi belirtme biçiminde bir sorun var.
+Image URL’nin şu attribute’ları bir araya getirmesini istiyoruz: base URL (her zaman `'https://react.dev/images/docs/scientists/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`) ve file extension (her zaman `'.jpg'`). Ancak `` tag’inin `src`’yi belirtme şeklinde bir sorun var.
Bu hatayı düzeltebilir misiniz?
@@ -436,7 +436,7 @@ Bu hatayı düzeltebilir misiniz?
```js
-const baseUrl = 'https://i.imgur.com/';
+const baseUrl = 'https://react.dev/images/docs/scientists/';
const person = {
name: 'Gregorio Y. Zara',
imageId: '7vQD0fP',
@@ -487,7 +487,7 @@ Yaptığınız düzeltmenin çalıştığını kontrol etmek için `imageSize` d
```js
-const baseUrl = 'https://i.imgur.com/';
+const baseUrl = 'https://react.dev/images/docs/scientists/';
const person = {
name: 'Gregorio Y. Zara',
imageId: '7vQD0fP',
@@ -564,7 +564,7 @@ export default function TodoList() {
```js src/utils.js
export function getImageUrl(person) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
person.imageSize +
'.jpg'
diff --git a/src/content/learn/keeping-components-pure.md b/src/content/learn/keeping-components-pure.md
index 463ed0e0e..6a8fe10b8 100644
--- a/src/content/learn/keeping-components-pure.md
+++ b/src/content/learn/keeping-components-pure.md
@@ -1,5 +1,5 @@
---
-title: Bileşenleri Saf Tutmak
+title: Bileşenleri Saf Tutmak
---
@@ -18,7 +18,7 @@ Bazı JavaScript fonksiyonları *saf* olarak adlandırılır. Saf fonksiyonlar s
## Saflık: Formüller olarak bileşenler {/*purity-components-as-formulas*/}
-Bilgisayar biliminde (ve özellikle fonksiyonel programlama dünyasında), [saf bir fonksiyon](https://wikipedia.org/wiki/Pure_function) aşağıdaki özelliklere sahip fonksiyonlardır:
+Bilgisayar biliminde (ve özellikle fonksiyonel programlama dünyasında), [saf bir fonksiyon](https://wikipedia.org/wiki/Pure_function) aşağıdaki özelliklere sahip fonksiyonlardır:
* **Kendi işine bakar.** Çağrılmadan önce var olan herhangi bir nesneyi ve objeyi değiştirmez.
* **Aynı girdi, aynı çıktı.** Aynı girdiler verildiğinde, saf bir fonksiyon her zaman aynı sonucu döndürmelidir.
@@ -27,13 +27,13 @@ Saf fonksiyonların bir örneğini zaten biliyor olabilirsiniz: matematikteki fo
Bu formülü ele alalım: .
-Eğer ise 'tür. Her zaman.
+Eğer ise . Her zaman.
-Eğer ise 'dır. Her zaman.
+Eğer ise . Her zaman.
-Eğer ise, y günün zamanına veya borsanın durumuna bağlı olarak bazen ya da veya olmaz.
+Eğer ise, y günün saatine veya borsanın durumuna bağlı olarak bazen , ya da olmaz.
-Eğer ve ise, y _her zaman_ 'dır.
+Eğer ve ise, y *her zaman* olur.
Eğer bunu bir JavaScript fonksiyonuna çevirseydik, şöyle görünürdü:
@@ -52,7 +52,7 @@ React bu konseptin etrafında tasarlanmıştır. **React yazdığınız her bile
```js src/App.js
function Recipe({ drinkers }) {
return (
-
+
Boil {drinkers} cups of water.
Add {drinkers} spoons of tea and {0.5 * drinkers} spoons of spice.
Add {0.5 * drinkers} cups of milk to boil and sugar to taste.
@@ -75,14 +75,15 @@ export default function App() {
-`Drinkers` parametresine `{2}` değerini verip, `Recipe'ye` geçerseniz, `2 bardak su` içeren JSX'i döndürür. Her zaman.
+`Recipe`’ye `drinkers={2}` pass ettiğinizde, `2 cups of water` içeren JSX döndürür. Her zaman.
`Drinkers` parametresine `{4}` değerini verip, `4 bardak su` içeren JSX’i döndürür. Her zaman.
+Tıpkı bir math formula gibi.
Tıpkı bir matematik formülü gibi.
-Bileşenlerinizi de bir tarif gibi düşünebilirsiniz: bunları takip eder ve pişirme esnasında yeni malzemeler eklemezseniz, her zaman aynı yemeği yaparsınız. Bu “yemek”, bileşenin React’e [render](/learn/render-and-commit) için sağladığı JSX’tir.
+Bileşenlerinizi de bir tarif gibi düşünebilirsiniz: bunları takip eder ve pişirme esnasında yeni malzemeler eklemezseniz, her zaman aynı yemeği yaparsınız. Bu “yemek”, bileşenin React’e [render](/learn/render-and-commit) için sağladığı JSX’tir.
@@ -216,18 +217,19 @@ Saf işlevler yazmak biraz alışkanlık ve disiplin gerektirir. Ama aynı zaman
-* Bir bileşen saf olmalıdır, yani:
- * **Kendi işine bakar.** İşlemeden önce var olan hiçbir nesneyi veya değişkeni değiştirmemelidir.
- * **Aynı girdiler, aynı çıktılar.** Aynı girdiler verildiğinde, bir bileşen her zaman aynı JSX'i döndürmelidir.
-* Oluşturma herhangi bir zamanda gerçekleşebilir, bu nedenle bileşenler birbirinin oluşturma sırasına bağlı olmamalıdır.
-* Bileşenlerinizin render için kullandığı girdilerin hiçbirini mutasyona uğratmamalısınız. Buna props, state ve context dahildir. Ekranı güncellemek için, önceden var olan nesneleri değiştirmek yerine [state "oluşturun".](/learn/state-a-components-memory)
-* Döndürdüğünüz JSX'te bileşeninizin mantığını ifade etmeye çalışın. "Bir şeyleri değiştirmeniz" gerektiğinde, bunu genellikle bir olay yöneticilerinde yapmak isteyeceksiniz. Son çare olarak, `useEffect`'i kullanabilirsiniz.
-* Saf fonksiyonlar yazmak biraz pratik gerektirir, ancak React'in paradigmasının gücünü açığa çıkarır.
+* Bir component pure olmalıdır, yani:
+
+ * **Kendi işine bakar.** Rendering’den önce var olan hiçbir object’i veya variable’ı değiştirmemelidir.
+ * **Aynı input’lar, aynı output.** Aynı input’lar verildiğinde, bir component her zaman aynı JSX’i return etmelidir.
+* Rendering herhangi bir zamanda gerçekleşebilir, bu yüzden component’ler birbirlerinin rendering sırasına bağlı olmamalıdır.
+* Component’lerinizin rendering için kullandığı input’ların hiçbirini mutate etmemelisiniz. Buna props, state ve context dahildir. Ekranı update etmek için, önceden var olan object’leri mutate etmek yerine ["set" state](/learn/state-a-components-memory) kullanın.
+* Component logic’inizi return ettiğiniz JSX içinde ifade etmeye çalışın. "Bir şeyleri değiştirmek" gerektiğinde, bunu genellikle bir event handler içinde yapmak istersiniz. Son çare olarak `useEffect` kullanabilirsiniz.
+* Pure function yazmak biraz pratik gerektirir, ancak React’in paradigm’ının gücünü ortaya çıkarır.
-
+
#### Bozuk bir saati düzelt {/*fix-a-broken-clock*/}
@@ -452,7 +454,7 @@ export default function App() {
```js src/utils.js hidden
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
@@ -550,7 +552,7 @@ export default function App() {
```js src/utils.js hidden
export function getImageUrl(person, size = 's') {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
person.imageId +
size +
'.jpg'
diff --git a/src/content/learn/lifecycle-of-reactive-effects.md b/src/content/learn/lifecycle-of-reactive-effects.md
index ab523b725..ab9d1426c 100644
--- a/src/content/learn/lifecycle-of-reactive-effects.md
+++ b/src/content/learn/lifecycle-of-reactive-effects.md
@@ -294,7 +294,7 @@ React'in `roomId` değiştikten sonra Efektinizin yeniden senkronize edilmesi ge
```js {1,3,8}
function ChatRoom({ roomId }) { // roomId özelliği zaman içinde değişebilir
useEffect(() => {
- const connection = createConnection(serverUrl, roomId); // Bu Efektte roomId'yi okur
+ const connection = createConnection(serverUrl, roomId); // Bu efekt, roomId değerini okur
connection.connect();
return () => {
connection.disconnect();
@@ -970,7 +970,7 @@ export default function App() {
@@ -1028,7 +1028,7 @@ export default function App() {
@@ -1084,7 +1084,7 @@ export default function App() {
@@ -1156,7 +1156,7 @@ export default function App() {
@@ -1221,7 +1221,7 @@ export default function App() {
@@ -1280,7 +1280,7 @@ export default function App() {
@@ -1712,7 +1712,7 @@ async function fetchPlanets() {
name: 'Venüs'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1736,7 +1736,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1747,7 +1747,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'Kŭmsŏng Vallis'
+ name: 'Kŭmsŏng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
@@ -1880,7 +1880,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1904,7 +1904,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1915,7 +1915,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'Kŭmsŏng Vallis'
+ name: 'Kŭmsŏng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
@@ -2043,7 +2043,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -2067,7 +2067,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -2078,7 +2078,7 @@ async function fetchPlaces(planetId) {
name: 'Diana Chasma'
}, {
id: 'kumsong-vallis',
- name: 'Kŭmsŏng Vallis'
+ name: 'Kŭmsŏng Vallis'
}]);
} else if (planetId === 'mars') {
resolve([{
diff --git a/src/content/learn/manipulating-the-dom-with-refs.md b/src/content/learn/manipulating-the-dom-with-refs.md
index 48c15db1d..b32a48910 100644
--- a/src/content/learn/manipulating-the-dom-with-refs.md
+++ b/src/content/learn/manipulating-the-dom-with-refs.md
@@ -1146,7 +1146,7 @@ button { display: block; margin-bottom: 10px; }
-`SearchButton`'a bir `onClick` prop'u eklemeniz ve `SearchButton` bunu tarayıcıya `