Context
Context
提供一种传递资料方式,不需要透过 props
的层层传递到每一层元件
- Context api 可以说是简化版的 redux
- 没有redux那麽强大可以结合许多redux生态系的middleware﹐例如thunk或saga来做data fetching / 处理side effect
- 若只是单单想找地方存share data来避掉props drilling的问题﹐那麽context api不失为一个简单的解法。
- 写新元件如果不想要依赖redux的时候﹐可以试着用Context来解。
- 解决同样的问题:“跨组件层级传递props的效率问题(prop-drilling)”
- 但不显示该值随时间变化的任何历史记录
- 订阅了context实例对象的组件在context值变化的时候一定会被强制更新,也就是说没办法跳过更新。
- 不包括任何副作用和中间件机制。
import { createContext, useState, useEffect } from 'react'
const DataContext = createContext({});
export const DataProvidor = ({children}) => {
return (
<DataContext.Providor value={{
width, search, setSearch
}}>
{children}
</DataContext.Providor>
)
}
import { useContext } from 'react';
import DataContext from './DataContext';
const { width } = useContext(DataContext);
参考资料
- Context – React
- [ReactDoc] React Context API 以及 useContext Hook 的使用 | PJCHENder 未整理笔记
- [React] React Context API 以及 useContext Hook 的使用 ~ PJCHENder
那些没告诉你的小细节 - 【react】context VS redux - 掘金