React-Hooks之useContext

1.什么是useContext Hook?
useContext相当于 类组件中的 static contextType = Context
函数式组件使用之前的Context来传递数据非常麻烦,代码如下:

import React, {createContext, useContext} from 'react';
const UserContext = createContext({});
const ColorContext = createContext({});
function Home() {
    const user = useContext(UserContext);
    const color = useContext(ColorContext);
    return (
        <UserContext.Consumer>
            {
                value1 =>{
                    return (
                        <ColorContext.Consumer>
                            {
                                value2 =>{
                                    return (
                                        <div>
                                            <p>{value1.name}</p>
                                            <p>{value1.age}</p>
                                            <p>{value2.color}</p>
                                        </div>
                                    )
                                }
                            }
                        </ColorContext.Consumer>
                    )
                }
            }
        </UserContext.Consumer>
    )
}
function App() {
    return (
        <UserContext.Provider value={{name:'sjl', age:21}}>
            <ColorContext.Provider value={{color:'red'}}>
                <Home/>
            </ColorContext.Provider>
        </UserContext.Provider>
        )
}
export default App;

问题发现:

  • 嵌套太深
  • 代码结构复杂,阅读性差
    useContext能够解决这个问题
import React, {createContext, useContext} from 'react';
const UserContext = createContext({});
const ColorContext = createContext({});
function Home() {
    const user = useContext(UserContext);
    const color = useContext(ColorContext);
    return (
        <div>
            <p>{user.name}</p>
            <p>{user.age}</p>
            <p>{color.color}</p>
        </div>
    )
}
function App() {
    return (
        <UserContext.Provider value={{name:'sjl', age:21}}>
            <ColorContext.Provider value={{color:'red'}}>
                <Home/>
            </ColorContext.Provider>
        </UserContext.Provider>
        )
}
export default App;

简洁又方便,完结开心的使用hooks的一天

嘿嘿.png

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容