Skip to content

docs: Refactor context provider usage #7793

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/components/Layout/HomeContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -1171,7 +1171,7 @@ async function Talks({ confId }) {
</CodeBlock>
}
right={
<NavContext.Provider value={{slug, navigate}}>
<NavContext value={{slug, navigate}}>
<BrowserChrome
domain="example.com"
path={'confs/' + slug}
Expand All @@ -1191,7 +1191,7 @@ async function Talks({ confId }) {
</Suspense>
</ExamplePanel>
</BrowserChrome>
</NavContext.Provider>
</NavContext>
}
/>
);
Expand Down
8 changes: 3 additions & 5 deletions src/components/Layout/Page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,9 @@ export function Page({
'max-w-7xl mx-auto',
section === 'blog' && 'lg:flex lg:flex-col lg:items-center'
)}>
<TocContext.Provider value={toc}>
<LanguagesContext.Provider value={languages}>
{children}
</LanguagesContext.Provider>
</TocContext.Provider>
<TocContext value={toc}>
<LanguagesContext value={languages}>{children}</LanguagesContext>
</TocContext>
</div>
{!isBlogIndex && (
<DocsPageFooter
Expand Down
4 changes: 2 additions & 2 deletions src/components/MDX/MDXComponents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ function IllustrationBlock({
</figure>
));
return (
<IllustrationContext.Provider value={isInBlockTrue}>
<IllustrationContext value={isInBlockTrue}>
<div className="relative group before:absolute before:-inset-y-16 before:inset-x-0 my-16 mx-0 2xl:mx-auto max-w-4xl 2xl:max-w-6xl">
{sequential ? (
<ol className="mdx-illustration-block flex">
Expand All @@ -369,7 +369,7 @@ function IllustrationBlock({
)}
<AuthorCredit author={author} authorLink={authorLink} />
</div>
</IllustrationContext.Provider>
</IllustrationContext>
);
}

Expand Down
12 changes: 6 additions & 6 deletions src/content/learn/managing-state.md
Original file line number Diff line number Diff line change
Expand Up @@ -741,9 +741,9 @@ export default function Section({ children }) {
const level = useContext(LevelContext);
return (
<section className="section">
<LevelContext.Provider value={level + 1}>
<LevelContext value={level + 1}>
{children}
</LevelContext.Provider>
</LevelContext>
</section>
);
}
Expand Down Expand Up @@ -836,13 +836,13 @@ export function TasksProvider({ children }) {
);

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider
<TasksContext value={tasks}>
<TasksDispatchContext
value={dispatch}
>
{children}
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}

Expand Down
56 changes: 28 additions & 28 deletions src/content/learn/scaling-up-with-reducer-and-context.md
Original file line number Diff line number Diff line change
Expand Up @@ -461,11 +461,11 @@ export default function TaskApp() {
const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);
// ...
return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
...
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}
```
Expand Down Expand Up @@ -509,8 +509,8 @@ export default function TaskApp() {
}

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
<h1>Day off in Kyoto</h1>
<AddTask
onAddTask={handleAddTask}
Expand All @@ -520,8 +520,8 @@ export default function TaskApp() {
onChangeTask={handleChangeTask}
onDeleteTask={handleDeleteTask}
/>
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}

Expand Down Expand Up @@ -676,13 +676,13 @@ In the next step, you will remove prop passing.
Now you don't need to pass the list of tasks or the event handlers down the tree:

```js {4-5}
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
<h1>Day off in Kyoto</h1>
<AddTask />
<TaskList />
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
```

Instead, any component that needs the task list can read it from the `TaskContext`:
Expand Down Expand Up @@ -730,13 +730,13 @@ export default function TaskApp() {
);

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
<h1>Day off in Kyoto</h1>
<AddTask />
<TaskList />
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}

Expand Down Expand Up @@ -921,11 +921,11 @@ export function TasksProvider({ children }) {
const [tasks, dispatch] = useReducer(tasksReducer, initialTasks);

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
{children}
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}
```
Expand Down Expand Up @@ -963,11 +963,11 @@ export function TasksProvider({ children }) {
);

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
{children}
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}

Expand Down Expand Up @@ -1174,11 +1174,11 @@ export function TasksProvider({ children }) {
);

return (
<TasksContext.Provider value={tasks}>
<TasksDispatchContext.Provider value={dispatch}>
<TasksContext value={tasks}>
<TasksDispatchContext value={dispatch}>
{children}
</TasksDispatchContext.Provider>
</TasksContext.Provider>
</TasksDispatchContext>
</TasksContext>
);
}

Expand Down
8 changes: 4 additions & 4 deletions src/content/learn/typescript.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,9 @@ export default function MyApp() {
const [theme, setTheme] = useState<Theme>('light');

return (
<ThemeContext.Provider value={theme}>
<ThemeContext value={theme}>
<MyComponent />
</ThemeContext.Provider>
</ThemeContext>
)
}

Expand Down Expand Up @@ -310,9 +310,9 @@ export default function MyApp() {
const object = useMemo(() => ({ kind: "complex" }), []);

return (
<Context.Provider value={object}>
<Context value={object}>
<MyComponent />
</Context.Provider>
</Context>
)
}

Expand Down
8 changes: 4 additions & 4 deletions src/content/reference/react/Component.md
Original file line number Diff line number Diff line change
Expand Up @@ -1814,9 +1814,9 @@ function Form() {

export default function MyApp() {
return (
<ThemeContext.Provider value="dark">
<ThemeContext value="dark">
<Form />
</ThemeContext.Provider>
</ThemeContext>
)
}
```
Expand Down Expand Up @@ -1900,9 +1900,9 @@ function Form() {

export default function MyApp() {
return (
<ThemeContext.Provider value="dark">
<ThemeContext value="dark">
<Form />
</ThemeContext.Provider>
</ThemeContext>
)
}
```
Expand Down
8 changes: 4 additions & 4 deletions src/content/reference/react/cloneElement.md
Original file line number Diff line number Diff line change
Expand Up @@ -414,9 +414,9 @@ export default function List({ items, renderItem }) {
{items.map((item, index) => {
const isHighlighted = index === selectedIndex;
return (
<HighlightContext.Provider key={item.id} value={isHighlighted}>
<HighlightContext key={item.id} value={isHighlighted}>
{renderItem(item)}
</HighlightContext.Provider>
</HighlightContext>
);
})}
```
Expand Down Expand Up @@ -472,12 +472,12 @@ export default function List({ items, renderItem }) {
{items.map((item, index) => {
const isHighlighted = index === selectedIndex;
return (
<HighlightContext.Provider
<HighlightContext
key={item.id}
value={isHighlighted}
>
{renderItem(item)}
</HighlightContext.Provider>
</HighlightContext>
);
})}
<hr />
Expand Down
26 changes: 13 additions & 13 deletions src/content/reference/react/createContext.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ const ThemeContext = createContext('light');

`createContext` returns a context object.

**The context object itself does not hold any information.** It represents _which_ context other components read or provide. Typically, you will use [`SomeContext.Provider`](#provider) in components above to specify the context value, and call [`useContext(SomeContext)`](/reference/react/useContext) in components below to read it. The context object has a few properties:
**The context object itself does not hold any information.** It represents _which_ context other components read or provide. Typically, you will use [`SomeContext`](#provider) in components above to specify the context value, and call [`useContext(SomeContext)`](/reference/react/useContext) in components below to read it. The context object has a few properties:

* `SomeContext.Provider` lets you provide the context value to components.
* `SomeContext` lets you provide the context value to components.
* `SomeContext.Consumer` is an alternative and rarely used way to read the context value.

---

### `SomeContext.Provider` {/*provider*/}
### `SomeContext` {/*provider*/}

Wrap your components into a context provider to specify the value of this context for all components inside:

Expand All @@ -54,9 +54,9 @@ function App() {
const [theme, setTheme] = useState('light');
// ...
return (
<ThemeContext.Provider value={theme}>
<ThemeContext value={theme}>
<Page />
</ThemeContext.Provider>
</ThemeContext>
);
}
```
Expand Down Expand Up @@ -141,11 +141,11 @@ function App() {
// ...

return (
<ThemeContext.Provider value={theme}>
<AuthContext.Provider value={currentUser}>
<ThemeContext value={theme}>
<AuthContext value={currentUser}>
<Page />
</AuthContext.Provider>
</ThemeContext.Provider>
</AuthContext>
</ThemeContext>
);
}
```
Expand Down Expand Up @@ -187,11 +187,11 @@ import { ThemeContext, AuthContext } from './Contexts.js';
function App() {
// ...
return (
<ThemeContext.Provider value={theme}>
<AuthContext.Provider value={currentUser}>
<ThemeContext value={theme}>
<AuthContext value={currentUser}>
<Page />
</AuthContext.Provider>
</ThemeContext.Provider>
</AuthContext>
</ThemeContext>
);
}
```
Expand Down
4 changes: 2 additions & 2 deletions src/content/reference/react/memo.md
Original file line number Diff line number Diff line change
Expand Up @@ -226,12 +226,12 @@ export default function MyApp() {
}

return (
<ThemeContext.Provider value={theme}>
<ThemeContext value={theme}>
<button onClick={handleClick}>
Switch theme
</button>
<Greeting name="Taylor" />
</ThemeContext.Provider>
</ThemeContext>
);
}

Expand Down
8 changes: 4 additions & 4 deletions src/content/reference/react/use.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,9 @@ To pass context to a `Button`, wrap it or one of its parent components into the
```js [[1, 3, "ThemeContext"], [2, 3, "\\"dark\\""], [1, 5, "ThemeContext"]]
function MyPage() {
return (
<ThemeContext.Provider value="dark">
<ThemeContext value="dark">
<Form />
</ThemeContext.Provider>
</ThemeContext>
);
}

Expand Down Expand Up @@ -116,9 +116,9 @@ const ThemeContext = createContext(null);

export default function MyApp() {
return (
<ThemeContext.Provider value="dark">
<ThemeContext value="dark">
<Form />
</ThemeContext.Provider>
</ThemeContext>
)
}

Expand Down
Loading