Skip to main content

useContext

用于在函数组件中获取全局上下文(context)的值。

在 React 中,不同级别的组件之间传递属性值,必须逐层传递,即使中间层的组件不需要这些数据。

useContext 允许组件在组件树中的任何位置访问共享的数据,而不必一层层地通过 props 传递。

假设我们有三个组件:TopComponent、MiddleComponent 和 BottomComponent,我们的目标是从 TopComponent 向 BottomComponent 传递数据。

index.tsx
import React, { createContext } from 'react';
import MiddleComponent from './middle-component';

export const GlobalContext = createContext({});

function TopComponent() {
const person = { name: "Alice", age: 18 };

return (
<GlobalContext.Provider value={person}>
<MiddleComponent />
</GlobalContext.Provider>
);
}

export default TopComponent;
middle-component.tsx
import React from 'react';
import BottomComponent from './bottom-component'


function MiddleComponent() {

return (
<BottomComponent />
);
}

export default MiddleComponent;
bottom-component.tsx
import React, { useContext } from 'react';
import { GlobalContext } from '.';

function BottomComponent() {
const person = useContext(GlobalContext);

return (
<div>
<p>Name: {person.name}</p>
<p>Age: {person.age}</p>
</div>
);
}

export default BottomComponent;

多个子组件共享数据值

<XxxContext.Provider value={{}}>
<ComponentA />
<ComponentB />
<ComponentC />
</XxxContext.Provider>