react Hooks —— 用法

概念:

接收一个 context 对象(React.createContext 的返回值)并返回该 context 的当前值。当前的 context 值由上层组件中距离当前组件最近的 <MyContext.Provider>value prop 决定。

当组件上层最近的 <MyContext.Provider> 更新时,该 Hook 会触发重渲染,并使用最新传递给 MyContext provider 的 context value 值。即使祖先使用 React.memoshouldComponentUpdate,也会在组件本身使用 useContext 时重新渲染。

调用了 useContext 的组件总会在 context 值变化时重新渲染。如果重渲染组件的开销较大,你可以 通过使用 memoization 来优化

用法

组件目录结构


组件结构

Home.js

import React from "react";
import { ThemeContext } from "../../contexts/theme";
import P from "../P";

const Home = () => {
  return (
    <div>
      <ThemeContext.Provider value="dark">
        <P />
      </ThemeContext.Provider>
    </div>
  );
};

export default Home;

P.js

import React from "react";
import F from "./F";

const P = () => {
  return (
    <div>
      <F />
    </div>
  );
};

export default P;

F.js

import React from "react";
import S from "./S";

const P = () => {
  return (
    <div>
      <S />
    </div>
  );
};

export default F;

S.js

import React, { useContext } from "react";
import { ThemeContext } from "../contexts/theme";

const S = () => {
  const theme = useContext(ThemeContext);
  return <div>{theme}</div>;
};

export default S;

页面展示


页面显示dark
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容