反应UseContext。比我们想象的要容易。
#javascript #react #前端 #reactnative

在这里,我们将在详细信息中了解 usecontext 。我们还学习何时以及如何使用 usecontext

我添加了 github demo click here

usecontext挂钩

有时我们使用道具将数据传递到父母。这是一个复杂的过程,如果我们需要通过许多组件将它们通过许多组件,这也是不便的。 React上下文API 提供了一种在React组件树中共享数据的方法。

用法:

  • 深入将数据深入到树上。
  • 树的一部分上下文。
  • 在传递对象和功能时优化重新渲染。
  • 更新通过上下文传递的数据。
  • 指定后备默认值。
  • usecontext可以将数据传递给我们的整个应用程序,也可以在应用程序的任何部分使用。

句法:

const value = useContext(SomeContext)

让我们尝试 usecontext 使用简单的应用程序。让我们更改一些字体大小,并尝试了解其数据流。

最终结果

Image description

首先,我们需要使用 react.createcontext 创建上下文,并且此上下文将传递给挂钩。我创建了一个名为Context的文件夹,并在文件夹中放置一个文件 index.js

import { createContext } from "react";

//initial fontSize as 16.
const fontSizeContext = createContext(16);
export default fontSizeContext;

在上面的代码中,我们使用了 createContext 并设置初始值16 。它分配给fontsizecontext常数并导出为默认值。

什么是createcontext
它创建一个上下文对象,并用于确保每个级别(内部树)上的每个组件都可以使用相同的上下文获取数据。

让我们对 app.js 文件进行一些更改。

import FontSizeContext from "./Context/context";
import { useState } from "react";
import UseContextExample from "./UseContextExample";

const App = () => {
  const [size, setSize] = useState(16);
  return (
    <FontSizeContext.Provider value={size}>
      <div style={{ width: '500px', margin: 'auto' }}>
        <UseContextExample />

        <button onClick={() => setSize(size + 5)}>Increase font size</button>
        <button
          onClick={() =>
            setSize((prevSize) => Math.min(prevSize - 5))
          }
        >
          Decrease font size
        </button>
      </div>
    </FontSizeContext.Provider>
  );
};
export default App;

在上面的代码中,我们使用字体大小 context.provider value = {size} 在此处,我们用 fontsize context.provider.provider 将组件包裹起来,使我们的 size/em value 可用于树内的每个组件。

我们还添加了两个按钮,一个按钮增加了 降低尺寸。每当有人单击按钮时, 更新其状态更改字体大小的 ,然后传递到整个组件树。因此,任何组件都可以轻松访问字体大小的值。

现在,创建一个名为 usecontextexample 的文件夹,目录中创建一个名为 index.js 的文件,然后将以下代码放入index.js文件中。

import { useContext } from "react";
import fontSizeContext from "../Context/context";
const UseContextExample = () => {
    const size = useContext(fontSizeContext);
    return <p style={{ fontSize: `${size}px` }}>font size now {size}px</p>;
};
export default UseContextExample;

在上述代码中,我们使用
const size = useContext(fontSizeContext);获取字体大小的值。此组件可以可以轻松访问字体大小的数据/值,因为它在组件树中留在
中。

我添加了 github demo click here

今天就这样。参见yaaa。