diff --git a/.eslintrc b/.eslintrc
index 7bc6ab93..935fa2f2 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/public/images/docs/scientists/1bX5QH6.jpg b/public/images/docs/scientists/1bX5QH6.jpg
new file mode 100644
index 00000000..630b91bd
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 00000000..7bd07436
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 00000000..0bc3a6f4
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 00000000..ecc8ab39
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 00000000..e93d8c80
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 00000000..cd8b4e55
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 00000000..941563f8
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 00000000..71baab95
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 00000000..5da6b45f
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 00000000..7313ffdb
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 00000000..735c29cd
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 00000000..a9dba869
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 00000000..433fc350
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 00000000..ac0a5f6c
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 00000000..af912e34
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 00000000..a59002bc
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 00000000..03894f39
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 00000000..53287dd0
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 00000000..43244d0c
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 00000000..ee41fbba
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 00000000..71d2917a
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 00000000..9fe8f630
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 00000000..fb3cf212
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 00000000..2bfa8ab8
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 00000000..05aa061e
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 00000000..4d7d0b6d
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 00000000..b81b83d2
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 00000000..8d44e4fe
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 00000000..44e0c65c
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 00000000..19ef1570
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 00000000..f50c7e34
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 00000000..056f8d52
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 00000000..5c9e249b
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 00000000..00e09d09
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 00000000..3b535b07
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 00000000..a15a897e
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 00000000..f2ac0482
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 00000000..ba2168f8
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 00000000..f3336072
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 00000000..67393f31
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 00000000..bc0708bd
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 00000000..e369df8c
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 00000000..a96c5c03
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 00000000..3c7afe1f
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 00000000..4a0b3dc3
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 00000000..8d657940
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 00000000..fc3c3426
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 00000000..5f482def
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 00000000..0a326951
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 00000000..42a0a00e
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 f971ddaf..96d2a630 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 c3ab47fa..002dae2a 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 cb83a617..1823ebdf 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 4e9aad8e..74964645 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 6f3e95d8..45c0090d 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 dc049c78..70e5c2e6 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 ada81a60..2079cdd6 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 4c07e6a1..fd49bd3e 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 cd0eec36..b40b9e43 100644
--- a/src/content/learn/adding-interactivity.md
+++ b/src/content/learn/adding-interactivity.md
@@ -141,73 +141,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -315,7 +315,7 @@ label, textarea { margin-bottom: 10px; display: block; }
-
+
ఈవెంట్ హ్యాండ్లర్లలో state ఎందుకు "స్థిరంగా" మరియు మారకుండా కనిపిస్తుందో తెలుసుకోవడానికి **[state ఒక స్నాప్షాట్](/learn/state-as-a-snapshot)** ని చదవండి.
@@ -428,7 +428,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',
}
});
@@ -536,7 +536,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 8a2142cf..182ad54b 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/choosing-the-state-structure.md b/src/content/learn/choosing-the-state-structure.md
index f6ed669a..2533a53d 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 (
<>
-
@@ -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
-
-
-
@@ -371,17 +371,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -417,17 +417,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -474,17 +474,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -512,17 +512,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -560,17 +560,17 @@ export default function PackingList() {
Sally Ride's Packing List
-
-
-
@@ -604,17 +604,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 a65b59f6..fef66838 100644
--- a/src/content/learn/creating-a-react-app.md
+++ b/src/content/learn/creating-a-react-app.md
@@ -104,7 +104,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 339f0422..43db5edd 100644
--- a/src/content/learn/describing-the-ui.md
+++ b/src/content/learn/describing-the-ui.md
@@ -32,7 +32,7 @@ React applications are built from isolated pieces of UI called *components*. A R
function Profile() {
return (
);
@@ -98,7 +98,7 @@ export default function Gallery() {
export default function Profile() {
return (
);
@@ -131,7 +131,7 @@ export default function TodoList() {
// This doesn't quite work!
Hedy Lamarr's Todos
@@ -160,7 +160,7 @@ export default function TodoList() {
<>
Hedy Lamarr's Todos
@@ -207,7 +207,7 @@ export default function TodoList() {
{person.name}'s Todos
@@ -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 @@ Read **[Keeping Components Pure](/learn/keeping-components-pure)** to learn how
## Your UI as a tree {/*your-ui-as-a-tree*/}
-React uses trees to model the relationships between components and modules.
+React uses trees to model the relationships between components and modules.
-A React render tree is a representation of the parent and child relationship between components.
+A React render tree is a representation of the parent and child relationship between components.
@@ -538,7 +538,7 @@ An example React render tree.
Components near the top of the tree, near the root component, are considered top-level components. Components with no child components are leaf components. This categorization of components is useful for understanding data flow and rendering performance.
-Modelling the relationship between JavaScript modules is another useful way to understand your app. We refer to it as a module dependency tree.
+Modelling the relationship between JavaScript modules is another useful way to understand your app. We refer to it as a module dependency tree.
@@ -546,7 +546,7 @@ An example module dependency tree.
-A dependency tree is often used by build tools to bundle all the relevant JavaScript code for the client to download and render. A large bundle size regresses user experience for React apps. Understanding the module dependency tree is helpful to debug such issues.
+A dependency tree is often used by build tools to bundle all the relevant JavaScript code for the client to download and render. A large bundle size regresses user experience for React apps. Understanding the module dependency tree is helpful to debug such issues.
diff --git a/src/content/learn/editor-setup.md b/src/content/learn/editor-setup.md
index 76580165..7f4748ef 100644
--- a/src/content/learn/editor-setup.md
+++ b/src/content/learn/editor-setup.md
@@ -31,7 +31,7 @@ React కమ్యూనిటీలో ఉపయోగించే ఇతర
### లింటింగ్ {/*linting*/}
-కోడ్ లింటర్లు మీరు వ్రాస్తునపుడు మీ కోడ్ లోని సమస్యలను కనుగొంటాయి, వాటిని త్వరగా పరిష్కరించడంలో మీకు సహాయపడతాయి. [ESLint](https://eslint.org/) అనేది JavaScript కోసం ఒక పాపులర్, ఓపెన్ సోర్స్ లింటర్.
+కోడ్ లింటర్లు మీరు వ్రాస్తునపుడు మీ కోడ్ లోని సమస్యలను కనుగొంటాయి, వాటిని త్వరగా పరిష్కరించడంలో మీకు సహాయపడతాయి. [ESLint](https://eslint.org/) అనేది JavaScript కోసం ఒక పాపులర్, ఓపెన్ సోర్స్ లింటర్.
* [React కోసం సిఫార్సు చేయబడిన కాన్ఫిగరేషన్తో ESLint ని ఇన్స్టాల్ చేయండి](https://www.npmjs.com/package/eslint-config-react-app) (మీరు [Node ని ఇన్స్టాల్ చేశారని](https://nodejs.org/en/download/current/) నిర్ధారించుకోండి!)
* [అధికారిక ఎక్సటెన్షన్లతో VSCode లో ESLint ను ఇంటిగ్రేట్ చేయండి](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
diff --git a/src/content/learn/escape-hatches.md b/src/content/learn/escape-hatches.md
index ab5f666a..cbaef8bb 100644
--- a/src/content/learn/escape-hatches.md
+++ b/src/content/learn/escape-hatches.md
@@ -227,7 +227,7 @@ function Form() {
}
```
-However, you *do* need Effects to synchronize with external systems.
+However, you *do* need Effects to synchronize with external systems.
@@ -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 26223884..7c6ec073 100644
--- a/src/content/learn/importing-and-exporting-components.md
+++ b/src/content/learn/importing-and-exporting-components.md
@@ -28,7 +28,7 @@ title: కంపోనెంట్లను ఇంపోర్ట్ మరి
function Profile() {
return (
);
@@ -80,7 +80,7 @@ export default function App() {
function Profile() {
return (
);
@@ -118,7 +118,7 @@ img { margin: 0 10px 10px 0; height: 90px; }
మీరు `.js` ఫైల్ ఎక్స్టెన్షన్ లేకుండా ఉండే ఫైళ్లను ఎదుర్కొన్నట్లయితే, అవి ఈ విధంగా ఉంటాయి:
-```js
+```js
import Gallery from './Gallery';
```
@@ -198,7 +198,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -286,7 +286,7 @@ export default function App() {
export function Profile() {
return (
);
@@ -354,7 +354,7 @@ export default function Gallery() {
export function Profile() {
return (
);
@@ -404,7 +404,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 a9fed1f8..6f5e3a10 100644
--- a/src/content/learn/index.md
+++ b/src/content/learn/index.md
@@ -10,8 +10,8 @@ React డాక్యుమెంటేషన్కు స్వాగతం!
-- కంపోనెంట్లను ఎలా క్రియేట్ చెయ్యాలి మరియు వాటిని ఎలా నెస్ట్ చెయ్యాలి
-- మార్కప్ మరియు స్టైల్స్ ను ఎలా జోడిన్చాలి
+- కంపోనెంట్లను ఎలా క్రియేట్ చెయ్యాలి మరియు వాటిని ఎలా నెస్ట్ చెయ్యాలి
+- మార్కప్ మరియు స్టైల్స్ ను ఎలా జోడిన్చాలి
- డేటాను ఎలా ప్రదర్శించాలి
- కన్డిషన్లను మరియు లిస్ట్లను ఎలా రెండర్ చెయ్యాలి
- ఈవెంట్లకు ప్రతిస్పందించడం మరియు స్క్రీన్ను ఎలా అప్డేట్ చెయ్యాలి
@@ -143,7 +143,7 @@ return (
```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 0a05bd3f..4e05e79e 100644
--- a/src/content/learn/javascript-in-jsx-with-curly-braces.md
+++ b/src/content/learn/javascript-in-jsx-with-curly-braces.md
@@ -28,7 +28,7 @@ export default function Avatar() {
return (
);
@@ -41,7 +41,7 @@ export default function Avatar() {
-ఇక్కడ, `"https://i.imgur.com/7vQD0fPs.jpg"` మరియు `"Gregorio Y. Zara"` strings గా పాస్ అవుతున్నాయి.
+ఇక్కడ, `"https://react.dev/images/docs/scientists/7vQD0fPs.jpg"` మరియు `"Gregorio Y. Zara"` strings గా పాస్ అవుతున్నాయి.
కానీ మీరు డైనమిక్గా `src` లేదా `alt` టెక్ట్స్ ను స్పెసిఫై చేయాలనుకుంటే? మీరు **JavaScript నుండి వాల్యూలను ఉపయోగించడానికి `"` మరియు `"` ను `{` మరియు `}` తో మార్చవచ్చు**:
@@ -49,7 +49,7 @@ export default function Avatar() {
```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}'s Todos
@@ -266,7 +266,7 @@ export default function TodoList() {
{person}'s Todos
@@ -314,7 +314,7 @@ export default function TodoList() {
{person.name}'s Todos
@@ -358,7 +358,7 @@ export default function TodoList() {
{person.name}'s Todos
@@ -388,7 +388,7 @@ body > div > div { padding: 20px; }
```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; }
కింద ఇచ్చిన ఆబ్జెక్టులో, పూర్తి చిత్రం URL నాలుగు భాగాల్లో విభజించబడింది: బేస్ URL, `imageId`, `imageSize`, మరియు ఫైల్ ఎక్స్టెన్షన్.
-మేము ఈ అట్రిబ్యూట్లను కలిపి చిత్రం URL తయారుచేయాలని కోరుకుంటున్నాము: బేస్ URL (ఎప్పుడూ `'https://i.imgur.com/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`), మరియు ఫైల్ ఎక్స్టెన్షన్ (ఎప్పుడూ `'.jpg'`). అయితే, `` ట్యాగ్ లో `src` ఎలా నిర్దేశించబడింది అనేదిలో ఏదో తప్పు ఉంది.
+మేము ఈ అట్రిబ్యూట్లను కలిపి చిత్రం URL తయారుచేయాలని కోరుకుంటున్నాము: బేస్ URL (ఎప్పుడూ `'https://react.dev/images/docs/scientists/'`), `imageId` (`'7vQD0fP'`), `imageSize` (`'s'`), మరియు ఫైల్ ఎక్స్టెన్షన్ (ఎప్పుడూ `'.jpg'`). అయితే, `` ట్యాగ్ లో `src` ఎలా నిర్దేశించబడింది అనేదిలో ఏదో తప్పు ఉంది.
మీరు దీనిని సరి చేయగలరా?
@@ -436,7 +436,7 @@ body > div > div { padding: 20px; }
```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 @@ body > div > div { padding: 20px; }
```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 fafd488e..5bf8e0a7 100644
--- a/src/content/learn/keeping-components-pure.md
+++ b/src/content/learn/keeping-components-pure.md
@@ -27,13 +27,13 @@ You might already be familiar with one example of pure functions: formulas in ma
Consider this math formula: .
-If then . Always.
+If then . Always.
-If then . Always.
+If then . Always.
-If , y won't sometimes be or or depending on the time of day or the state of the stock market.
+If , y won't sometimes be or or depending on the time of day or the state of the stock market.
-If and , y will _always_ be .
+If and , y will _always_ be .
If we made this into a JavaScript function, it would look like this:
@@ -52,7 +52,7 @@ React is designed around this concept. **React assumes that every component you
```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,11 +75,11 @@ export default function App() {
-When you pass `drinkers={2}` to `Recipe`, it will return JSX containing `2 cups of water`. Always.
+When you pass `drinkers={2}` to `Recipe`, it will return JSX containing `2 cups of water`. Always.
If you pass `drinkers={4}`, it will return JSX containing `4 cups of water`. Always.
-Just like a math formula.
+Just like a math formula.
You could think of your components as recipes: if you follow them and don't introduce new ingredients during the cooking process, you will get the same dish every time. That "dish" is the JSX that the component serves to React to [render.](/learn/render-and-commit)
@@ -217,7 +217,7 @@ Every new React feature we're building takes advantage of purity. From data fetc
* A component must be pure, meaning:
* **It minds its own business.** It should not change any objects or variables that existed before rendering.
- * **Same inputs, same output.** Given the same inputs, a component should always return the same JSX.
+ * **Same inputs, same output.** Given the same inputs, a component should always return the same JSX.
* Rendering can happen at any time, so components should not depend on each others' rendering sequence.
* You should not mutate any of the inputs that your components use for rendering. That includes props, state, and context. To update the screen, ["set" state](/learn/state-a-components-memory) instead of mutating preexisting objects.
* Strive to express your component's logic in the JSX you return. When you need to "change things", you'll usually want to do it in an event handler. As a last resort, you can `useEffect`.
@@ -226,7 +226,7 @@ Every new React feature we're building takes advantage of purity. From data fetc
-
+
#### Fix a broken clock {/*fix-a-broken-clock*/}
@@ -451,7 +451,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'
@@ -549,7 +549,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 72a2e775..608db09a 100644
--- a/src/content/learn/lifecycle-of-reactive-effects.md
+++ b/src/content/learn/lifecycle-of-reactive-effects.md
@@ -293,7 +293,7 @@ You might be wondering how React knew that your Effect needed to re-synchronize
```js {1,3,8}
function ChatRoom({ roomId }) { // The roomId prop may change over time
useEffect(() => {
- const connection = createConnection(serverUrl, roomId); // This Effect reads roomId
+ const connection = createConnection(serverUrl, roomId); // This Effect reads roomId
connection.connect();
return () => {
connection.disconnect();
@@ -969,7 +969,7 @@ export default function App() {
@@ -1027,7 +1027,7 @@ export default function App() {
@@ -1083,7 +1083,7 @@ export default function App() {
@@ -1155,7 +1155,7 @@ export default function App() {
@@ -1220,7 +1220,7 @@ export default function App() {
@@ -1279,7 +1279,7 @@ export default function App() {
@@ -1711,7 +1711,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1735,7 +1735,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1746,7 +1746,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([{
@@ -1879,7 +1879,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -1903,7 +1903,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -1914,7 +1914,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([{
@@ -2042,7 +2042,7 @@ async function fetchPlanets() {
name: 'Venus'
}, {
id: 'mars',
- name: 'Mars'
+ name: 'Mars'
}]);
}, 1000);
});
@@ -2066,7 +2066,7 @@ async function fetchPlaces(planetId) {
name: 'Spain'
}, {
id: 'vietnam',
- name: 'Vietnam'
+ name: 'Vietnam'
}]);
} else if (planetId === 'venus') {
resolve([{
@@ -2077,7 +2077,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/passing-data-deeply-with-context.md b/src/content/learn/passing-data-deeply-with-context.md
index e81678c8..fead4056 100644
--- a/src/content/learn/passing-data-deeply-with-context.md
+++ b/src/content/learn/passing-data-deeply-with-context.md
@@ -857,7 +857,7 @@ If neither of these approaches works well for you, consider context.
* **Current account:** Many components might need to know the currently logged in user. Putting it in context makes it convenient to read it anywhere in the tree. Some apps also let you operate multiple accounts at the same time (e.g. to leave a comment as a different user). In those cases, it can be convenient to wrap a part of the UI into a nested provider with a different current account value.
* **Routing:** Most routing solutions use context internally to hold the current route. This is how every link "knows" whether it's active or not. If you build your own router, you might want to do it too.
* **Managing state:** As your app grows, you might end up with a lot of state closer to the top of your app. Many distant components below may want to change it. It is common to [use a reducer together with context](/learn/scaling-up-with-reducer-and-context) to manage complex state and pass it down to distant components without too much hassle.
-
+
Context is not limited to static values. If you pass a different value on the next render, React will update all the components reading it below! This is why context is often used in combination with state.
In general, if some information is needed by distant components in different parts of the tree, it's a good indication that context will help you.
@@ -963,27 +963,27 @@ export const places = [{
description: 'The tradition of choosing bright colors for houses began in the late 20th century.',
imageId: 'K9HVAGH'
}, {
- id: 1,
+ id: 1,
name: 'Rainbow Village in Taichung, Taiwan',
description: 'To save the houses from demolition, Huang Yung-Fu, a local resident, painted all 1,200 of them in 1924.',
imageId: '9EAYZrt'
}, {
- id: 2,
+ id: 2,
name: 'Macromural de Pachuca, Mexico',
description: 'One of the largest murals in the world covering homes in a hillside neighborhood.',
imageId: 'DgXHVwu'
}, {
- id: 3,
+ id: 3,
name: 'Selarón Staircase in Rio de Janeiro, Brazil',
description: 'This landmark was created by Jorge Selarón, a Chilean-born artist, as a "tribute to the Brazilian people."',
imageId: 'aeO3rpI'
}, {
- id: 4,
+ id: 4,
name: 'Burano, Italy',
description: 'The houses are painted following a specific color system dating back to 16th century.',
imageId: 'kxsph5C'
}, {
- id: 5,
+ id: 5,
name: 'Chefchaouen, Marocco',
description: 'There are a few theories on why the houses are painted blue, including that the color repels mosquitos or that it symbolizes sky and heaven.',
imageId: 'rTqKo46'
@@ -998,7 +998,7 @@ export const places = [{
```js src/utils.js
export function getImageUrl(place) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
place.imageId +
'l.jpg'
);
@@ -1007,9 +1007,9 @@ export function getImageUrl(place) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
@@ -1102,27 +1102,27 @@ export const places = [{
description: 'The tradition of choosing bright colors for houses began in the late 20th century.',
imageId: 'K9HVAGH'
}, {
- id: 1,
+ id: 1,
name: 'Rainbow Village in Taichung, Taiwan',
description: 'To save the houses from demolition, Huang Yung-Fu, a local resident, painted all 1,200 of them in 1924.',
imageId: '9EAYZrt'
}, {
- id: 2,
+ id: 2,
name: 'Macromural de Pachuca, Mexico',
description: 'One of the largest murals in the world covering homes in a hillside neighborhood.',
imageId: 'DgXHVwu'
}, {
- id: 3,
+ id: 3,
name: 'Selarón Staircase in Rio de Janeiro, Brazil',
description: 'This landmark was created by Jorge Selarón, a Chilean-born artist, as a "tribute to the Brazilian people".',
imageId: 'aeO3rpI'
}, {
- id: 4,
+ id: 4,
name: 'Burano, Italy',
description: 'The houses are painted following a specific color system dating back to 16th century.',
imageId: 'kxsph5C'
}, {
- id: 5,
+ id: 5,
name: 'Chefchaouen, Marocco',
description: 'There are a few theories on why the houses are painted blue, including that the color repels mosquitos or that it symbolizes sky and heaven.',
imageId: 'rTqKo46'
@@ -1137,7 +1137,7 @@ export const places = [{
```js src/utils.js
export function getImageUrl(place) {
return (
- 'https://i.imgur.com/' +
+ 'https://react.dev/images/docs/scientists/' +
place.imageId +
'l.jpg'
);
@@ -1146,9 +1146,9 @@ export function getImageUrl(place) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
diff --git a/src/content/learn/passing-props-to-a-component.md b/src/content/learn/passing-props-to-a-component.md
index 26821dc8..8b936066 100644
--- a/src/content/learn/passing-props-to-a-component.md
+++ b/src/content/learn/passing-props-to-a-component.md
@@ -29,7 +29,7 @@ function Avatar() {
return (
- Profession:
+ Profession:
physicist and chemist
- Awards: 4
+ Awards: 4
(Nobel Prize in Physics, Nobel Prize in Chemistry, Davy Medal, Matteucci Medal)
@@ -477,11 +477,11 @@ export default function Gallery() {
/>
Photo
-Here's how these look as a tree:
+Here's how these look as a tree:
@@ -186,7 +186,7 @@ export default function App() {
return (
- {showB && }
+ {showB && }
);
@@ -594,7 +594,7 @@ export default function Picture() {
}}
className={pictureClassName}
alt="Rainbow houses in Kampung Pelangi, Indonesia"
- src="https://i.imgur.com/5qwVYb1.jpeg"
+ src="https://react.dev/images/docs/scientists/5qwVYb1.jpeg"
/>
);
@@ -649,7 +649,7 @@ export default function Picture() {
e.stopPropagation()}
/>
@@ -660,7 +660,7 @@ export default function Picture() {
setIsActive(true)}
/>
diff --git a/src/content/learn/referencing-values-with-refs.md b/src/content/learn/referencing-values-with-refs.md
index 4386e2bd..657d3ddc 100644
--- a/src/content/learn/referencing-values-with-refs.md
+++ b/src/content/learn/referencing-values-with-refs.md
@@ -34,7 +34,7 @@ const ref = useRef(0);
`useRef` returns an object like this:
```js
-{
+{
current: 0 // The value you passed to useRef
}
```
diff --git a/src/content/learn/removing-effect-dependencies.md b/src/content/learn/removing-effect-dependencies.md
index 61eb2e8d..0b69cfa6 100644
--- a/src/content/learn/removing-effect-dependencies.md
+++ b/src/content/learn/removing-effect-dependencies.md
@@ -411,7 +411,7 @@ function Form() {
function handleSubmit() {
setSubmitted(true);
- }
+ }
// ...
}
@@ -429,7 +429,7 @@ function Form() {
// ✅ Good: Event-specific logic is called from event handlers
post('/api/register');
showNotification('Successfully registered!', theme);
- }
+ }
// ...
}
@@ -878,7 +878,7 @@ const options2 = { serverUrl: 'https://localhost:1234', roomId: 'music' };
console.log(Object.is(options1, options2)); // false
```
-**Object and function dependencies can make your Effect re-synchronize more often than you need.**
+**Object and function dependencies can make your Effect re-synchronize more often than you need.**
This is why, whenever possible, you should try to avoid objects and functions as your Effect's dependencies. Instead, try moving them outside the component, inside the Effect, or extracting primitive values out of them.
diff --git a/src/content/learn/render-and-commit.md b/src/content/learn/render-and-commit.md
index f9b05e18..055111c3 100644
--- a/src/content/learn/render-and-commit.md
+++ b/src/content/learn/render-and-commit.md
@@ -54,7 +54,7 @@ root.render();
export default function Image() {
return (
);
@@ -103,7 +103,7 @@ export default function Gallery() {
function Image() {
return (
);
@@ -124,7 +124,7 @@ img { margin: 0 10px 10px 0; }
-* **During the initial render,** React will [create the DOM nodes](https://developer.mozilla.org/docs/Web/API/Document/createElement) for ``, `
`, and three `` tags.
+* **During the initial render,** React will [create the DOM nodes](https://developer.mozilla.org/docs/Web/API/Document/createElement) for ``, `
`, and three `` tags.
* **During a re-render,** React will calculate which of their properties, if any, have changed since the previous render. It won't do anything with that information until the next step, the commit phase.
diff --git a/src/content/learn/rendering-lists.md b/src/content/learn/rendering-lists.md
index 32f81c44..8dfdf0b1 100644
--- a/src/content/learn/rendering-lists.md
+++ b/src/content/learn/rendering-lists.md
@@ -115,7 +115,7 @@ const people = [{
}, {
id: 3,
name: 'Percy Lavon Julian',
- profession: 'chemist',
+ profession: 'chemist',
}, {
id: 4,
name: 'Subrahmanyan Chandrasekhar',
@@ -223,7 +223,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'
);
@@ -232,9 +232,9 @@ export function getImageUrl(person) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
@@ -353,7 +353,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'
);
@@ -362,9 +362,9 @@ export function getImageUrl(person) {
```css
ul { list-style-type: none; padding: 0px 10px; }
-li {
- margin-bottom: 10px;
- display: grid;
+li {
+ margin-bottom: 10px;
+ display: grid;
grid-template-columns: auto 1fr;
gap: 20px;
align-items: center;
@@ -514,7 +514,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'
);
@@ -629,7 +629,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'
);
@@ -743,7 +743,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'
);
@@ -861,7 +861,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'
);
diff --git a/src/content/learn/responding-to-events.md b/src/content/learn/responding-to-events.md
index 78474217..1fb554c5 100644
--- a/src/content/learn/responding-to-events.md
+++ b/src/content/learn/responding-to-events.md
@@ -169,7 +169,7 @@ This lets these two buttons show different messages. Try changing the messages p
### Passing event handlers as props {/*passing-event-handlers-as-props*/}
-Often you'll want the parent component to specify a child's event handler. Consider buttons: depending on where you're using a `Button` component, you might want to execute a different function—perhaps one plays a movie and another uploads an image.
+Often you'll want the parent component to specify a child's event handler. Consider buttons: depending on where you're using a `Button` component, you might want to execute a different function—perhaps one plays a movie and another uploads an image.
To do this, pass a prop the component receives from its parent as the event handler like so:
@@ -313,11 +313,11 @@ button { margin-right: 10px; }
Notice how the `App` component does not need to know *what* `Toolbar` will do with `onPlayMovie` or `onUploadImage`. That's an implementation detail of the `Toolbar`. Here, `Toolbar` passes them down as `onClick` handlers to its `Button`s, but it could later also trigger them on a keyboard shortcut. Naming props after app-specific interactions like `onPlayMovie` gives you the flexibility to change how they're used later.
-
+
Make sure that you use the appropriate HTML tags for your event handlers. For example, to handle clicks, use [`
>
);
@@ -1025,7 +1025,7 @@ export default function AddTask() {
type: 'added',
id: nextId++,
text: text,
- });
+ });
}}>Add
>
);
@@ -1244,7 +1244,7 @@ export default function AddTask() {
type: 'added',
id: nextId++,
text: text,
- });
+ });
}}>Add
>
);
diff --git a/src/content/learn/sharing-state-between-components.md b/src/content/learn/sharing-state-between-components.md
index 52eaf28f..2fbef891 100644
--- a/src/content/learn/sharing-state-between-components.md
+++ b/src/content/learn/sharing-state-between-components.md
@@ -323,7 +323,7 @@ To see what this feels like in practice with a few more components, read [Thinki
#### Synced inputs {/*synced-inputs*/}
-These two inputs are independent. Make them stay in sync: editing one input should update the other input with the same text, and vice versa.
+These two inputs are independent. Make them stay in sync: editing one input should update the other input with the same text, and vice versa.
@@ -571,7 +571,7 @@ function SearchBar({ query, onChange }) {
function List({ items }) {
return (
-
+
{items.map(food => (
{food.name}
diff --git a/src/content/learn/state-a-components-memory.md b/src/content/learn/state-a-components-memory.md
index 0efe1191..0637dd17 100644
--- a/src/content/learn/state-a-components-memory.md
+++ b/src/content/learn/state-a-components-memory.md
@@ -40,14 +40,14 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
-
@@ -63,73 +63,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -220,14 +220,14 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
-
@@ -243,73 +243,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -361,7 +361,7 @@ The convention is to name this pair like `const [something, setSomething]`. You
-The only argument to `useState` is the **initial value** of your state variable. In this example, the `index`'s initial value is set to `0` with `useState(0)`.
+The only argument to `useState` is the **initial value** of your state variable. In this example, the `index`'s initial value is set to `0` with `useState(0)`.
Every time your component renders, `useState` gives you an array containing two values:
@@ -408,18 +408,18 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
{showMore ? 'Hide' : 'Show'} details
{showMore &&
{sculpture.description}
}
-
>
@@ -432,73 +432,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -628,73 +628,73 @@ let sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
@@ -773,18 +773,18 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
{showMore ? 'Hide' : 'Show'} details
{showMore &&
{sculpture.description}
}
-
@@ -797,73 +797,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -944,18 +944,18 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
{showMore ? 'Hide' : 'Show'} details
{showMore &&
{sculpture.description}
}
-
>
@@ -968,73 +968,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -1106,18 +1106,18 @@ export default function Gallery() {
Next
- {sculpture.name}
+ {sculpture.name}
by {sculpture.artist}
-
+
({index + 1} of {sculptureList.length})
{showMore ? 'Hide' : 'Show'} details
{showMore &&
{sculpture.description}
}
-
>
@@ -1130,73 +1130,73 @@ export const sculptureList = [{
name: 'Homenaje a la Neurocirugía',
artist: 'Marta Colvin Andrade',
description: 'Although Colvin is predominantly known for abstract themes that allude to pre-Hispanic symbols, this gigantic sculpture, an homage to neurosurgery, is one of her most recognizable public art pieces.',
- url: 'https://i.imgur.com/Mx7dA2Y.jpg',
- alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
+ url: 'https://react.dev/images/docs/scientists/Mx7dA2Y.jpg',
+ alt: 'A bronze statue of two crossed hands delicately holding a human brain in their fingertips.'
}, {
name: 'Floralis Genérica',
artist: 'Eduardo Catalano',
description: 'This enormous (75 ft. or 23m) silver flower is located in Buenos Aires. It is designed to move, closing its petals in the evening or when strong winds blow and opening them in the morning.',
- url: 'https://i.imgur.com/ZF6s192m.jpg',
+ url: 'https://react.dev/images/docs/scientists/ZF6s192m.jpg',
alt: 'A gigantic metallic flower sculpture with reflective mirror-like petals and strong stamens.'
}, {
name: 'Eternal Presence',
artist: 'John Woodrow Wilson',
description: 'Wilson was known for his preoccupation with equality, social justice, as well as the essential and spiritual qualities of humankind. This massive (7ft. or 2,13m) bronze represents what he described as "a symbolic Black presence infused with a sense of universal humanity."',
- url: 'https://i.imgur.com/aTtVpES.jpg',
+ url: 'https://react.dev/images/docs/scientists/aTtVpES.jpg',
alt: 'The sculpture depicting a human head seems ever-present and solemn. It radiates calm and serenity.'
}, {
name: 'Moai',
artist: 'Unknown Artist',
description: 'Located on the Easter Island, there are 1,000 moai, or extant monumental statues, created by the early Rapa Nui people, which some believe represented deified ancestors.',
- url: 'https://i.imgur.com/RCwLEoQm.jpg',
+ url: 'https://react.dev/images/docs/scientists/RCwLEoQm.jpg',
alt: 'Three monumental stone busts with the heads that are disproportionately large with somber faces.'
}, {
name: 'Blue Nana',
artist: 'Niki de Saint Phalle',
description: 'The Nanas are triumphant creatures, symbols of femininity and maternity. Initially, Saint Phalle used fabric and found objects for the Nanas, and later on introduced polyester to achieve a more vibrant effect.',
- url: 'https://i.imgur.com/Sd1AgUOm.jpg',
+ url: 'https://react.dev/images/docs/scientists/Sd1AgUOm.jpg',
alt: 'A large mosaic sculpture of a whimsical dancing female figure in a colorful costume emanating joy.'
}, {
name: 'Ultimate Form',
artist: 'Barbara Hepworth',
description: 'This abstract bronze sculpture is a part of The Family of Man series located at Yorkshire Sculpture Park. Hepworth chose not to create literal representations of the world but developed abstract forms inspired by people and landscapes.',
- url: 'https://i.imgur.com/2heNQDcm.jpg',
+ url: 'https://react.dev/images/docs/scientists/2heNQDcm.jpg',
alt: 'A tall sculpture made of three elements stacked on each other reminding of a human figure.'
}, {
name: 'Cavaliere',
artist: 'Lamidi Olonade Fakeye',
description: "Descended from four generations of woodcarvers, Fakeye's work blended traditional and contemporary Yoruba themes.",
- url: 'https://i.imgur.com/wIdGuZwm.png',
+ url: 'https://react.dev/images/docs/scientists/wIdGuZwm.png',
alt: 'An intricate wood sculpture of a warrior with a focused face on a horse adorned with patterns.'
}, {
name: 'Big Bellies',
artist: 'Alina Szapocznikow',
description: "Szapocznikow is known for her sculptures of the fragmented body as a metaphor for the fragility and impermanence of youth and beauty. This sculpture depicts two very realistic large bellies stacked on top of each other, each around five feet (1,5m) tall.",
- url: 'https://i.imgur.com/AlHTAdDm.jpg',
+ url: 'https://react.dev/images/docs/scientists/AlHTAdDm.jpg',
alt: 'The sculpture reminds a cascade of folds, quite different from bellies in classical sculptures.'
}, {
name: 'Terracotta Army',
artist: 'Unknown Artist',
description: 'The Terracotta Army is a collection of terracotta sculptures depicting the armies of Qin Shi Huang, the first Emperor of China. The army consisted of more than 8,000 soldiers, 130 chariots with 520 horses, and 150 cavalry horses.',
- url: 'https://i.imgur.com/HMFmH6m.jpg',
+ url: 'https://react.dev/images/docs/scientists/HMFmH6m.jpg',
alt: '12 terracotta sculptures of solemn warriors, each with a unique facial expression and armor.'
}, {
name: 'Lunar Landscape',
artist: 'Louise Nevelson',
description: 'Nevelson was known for scavenging objects from New York City debris, which she would later assemble into monumental constructions. In this one, she used disparate parts like a bedpost, juggling pin, and seat fragment, nailing and gluing them into boxes that reflect the influence of Cubism’s geometric abstraction of space and form.',
- url: 'https://i.imgur.com/rN7hY6om.jpg',
+ url: 'https://react.dev/images/docs/scientists/rN7hY6om.jpg',
alt: 'A black matte sculpture where the individual elements are initially indistinguishable.'
}, {
name: 'Aureole',
artist: 'Ranjani Shettar',
description: 'Shettar merges the traditional and the modern, the natural and the industrial. Her art focuses on the relationship between man and nature. Her work was described as compelling both abstractly and figuratively, gravity defying, and a "fine synthesis of unlikely materials."',
- url: 'https://i.imgur.com/okTpbHhm.jpg',
+ url: 'https://react.dev/images/docs/scientists/okTpbHhm.jpg',
alt: 'A pale wire-like sculpture mounted on concrete wall and descending on the floor. It appears light.'
}, {
name: 'Hippos',
artist: 'Taipei Zoo',
description: 'The Taipei Zoo commissioned a Hippo Square featuring submerged hippos at play.',
- url: 'https://i.imgur.com/6o5Vuyu.jpg',
+ url: 'https://react.dev/images/docs/scientists/6o5Vuyu.jpg',
alt: 'A group of bronze hippo sculptures emerging from the sett sidewalk as if they were swimming.'
}];
```
@@ -1266,7 +1266,7 @@ export default function Form() {
}
```
-```css
+```css
h1 { margin-top: 10px; }
```
@@ -1317,7 +1317,7 @@ export default function Form() {
}
```
-```css
+```css
h1 { margin-top: 10px; }
```
@@ -1446,7 +1446,7 @@ export default function FeedbackForm() {
Try moving the second `useState` call after the `if` condition and notice how this breaks it again.
-If your linter is [configured for React](/learn/editor-setup#linting), you should see a lint error when you make a mistake like this. If you don't see an error when you try the faulty code locally, you need to set up linting for your project.
+If your linter is [configured for React](/learn/editor-setup#linting), you should see a lint error when you make a mistake like this. If you don't see an error when you try the faulty code locally, you need to set up linting for your project.
diff --git a/src/content/learn/thinking-in-react.md b/src/content/learn/thinking-in-react.md
index 21d54926..41e3ccaf 100644
--- a/src/content/learn/thinking-in-react.md
+++ b/src/content/learn/thinking-in-react.md
@@ -228,7 +228,7 @@ UI ఇంటరాక్టివ్గా చేయడానికి, మ
వాటిని ఒక్కొక్కటిగా మళ్లీ చూద్దాం:
-1. ప్రొడక్ట్స్ యొక్క ఒరిజినల్ లిస్ట్ **props గా పాస్ చేయబడింది, కనుక ఇది state కాదు.**
+1. ప్రొడక్ట్స్ యొక్క ఒరిజినల్ లిస్ట్ **props గా పాస్ చేయబడింది, కనుక ఇది state కాదు.**
2. కాలక్రమేణా మారుతున్నందున సెర్చ్ టెక్స్ట్ state గా కనిపిస్తోంది మరియు దేని నుండి కంప్యూట్ చేయబడదు.
3. చెక్బాక్స్ వేల్యూ కాలానుగుణంగా మారుతూ ఉంటుంది మరియు దేని నుండి కంప్యూట్ చేయబడదు కాబట్టి దాని వేల్యూ state గా కనిపిస్తోంది.
4. ప్రొడక్ట్స్ యొక్క ఫిల్టర్ చేయబడిన లిస్ట్ **state కాదు ఎందుకంటే ఇది ప్రొడక్ట్స్ యొక్క అసలు లిస్ట్ను తీసుకొని, సెర్చ్ టెక్స్ట్ మరియు చెక్బాక్స్ వేల్యూ ప్రకారం ఫిల్టర్ చేయడం ద్వారా కంప్యూట్ చేయబడుతుంది**.
@@ -266,29 +266,29 @@ props మరియు state భిన్నంగా ఉంటాయి, కా
ఇప్పుడు వాటి కోసం మన వ్యూహాన్ని అమలు చేద్దాం:
1. **state ని ఉపయోగించే కాంపోనెంట్లను గుర్తించండి:**
- * `ProductTable` ఆ state (సెర్చ్ టెక్స్ట్ మరియు చెక్బాక్స్ వేల్యూ) ఆధారంగా ప్రోడక్ట్ లిస్ట్ను ఫిల్టర్ చేయాలి.
+ * `ProductTable` ఆ state (సెర్చ్ టెక్స్ట్ మరియు చెక్బాక్స్ వేల్యూ) ఆధారంగా ప్రోడక్ట్ లిస్ట్ను ఫిల్టర్ చేయాలి.
* `SearchBar` ఆ state ని ప్రదర్శించాలి (సెర్చ్ టెక్స్ట్ మరియు చెక్బాక్స్ వేల్యూ).
2. **వారి కామన్ పేరెంట్ను కనుగొనండి:** రెండు కాంపోనెంట్లు పంచుకునే మొదటి పేరెంట్ కాంపోనెంట్ `FilterableProductTable`.
3. **state ఎక్కడ నివసిస్తుందో నిర్ణయించండి**: మేము ఫిల్టర్ టెక్స్ట్ మరియు చెక్ చేసిన state వేల్యూలను `FilterableProductTable` లో ఉంచుతాము.
-కాబట్టి state వేల్యూలు `FilterableProductTable` లో ఉంటాయి.
+కాబట్టి state వేల్యూలు `FilterableProductTable` లో ఉంటాయి.
[`useState() హుక్`](/reference/react/useState) తో కాంపోనెంట్కు state ను జోడించండి. హుక్స్ అనేవి మిమల్ని React కి "హుక్ ఇన్" చేసే ప్రత్యేక ఫంక్షన్స్. `FilterableProductTable` ఎగువన రెండు state వేరియబుల్లను జోడించి, వాటి ఇనీటియాల్ state ని పేర్కొనండి:
```js
function FilterableProductTable({ products }) {
const [filterText, setFilterText] = useState('');
- const [inStockOnly, setInStockOnly] = useState(false);
+ const [inStockOnly, setInStockOnly] = useState(false);
```
ఆపై, `filterText` మరియు `inStockOnly` ని `ProductTable` మరియు `SearchBar` కి props గా పాస్ చేయండి:
```js