老师关于课程视频中描述的困惑
来源:6-6 【路由搭建】withRouter 与 useRouter

weixin_慕丝2377090
2022-04-21
老师在课程中,说“home Page的子组件,它不与react-router直接相连接,怎么才可以让它们接收到数据呢?使用:context ,方案:使用HOC高阶组件/hooks函数”
但是老师的代码里并没有使用useHooks()创建上下文呀?更没有创建一个包含了全局state的context组件,来通过provider提供全局的state getter/setter给子组件来更改上下文context。
比如,老师使用useHistory()这个钩子,得到的history,对history进行push操作。难道这个push是全局上下文?但是我感觉它更像一个被生命周期关联住的全局单例对象。
请求老师解惑。
写回答
1回答
-
阿莱克斯刘
2022-04-27
hook指的是react中的一种代码设计模式,在react中见到名称为 useXXX() 的方法一般来说都是钩子hook。hook只能在函数式组件中使用,相较于类组件作使用的高阶组件HOC的方式,hooks的代码量明显低很多,也几乎没有类似类组件的模版代码。总体来说,函数式组件是未来趋势,所以能用函数式组件就不要用类组件,能使用hook的就不需要使用HOC。当然,类组件和HOC是react的基础,最好还是能熟练掌握。
另外,你的感觉没有错,useHistory得到的history对象不属于组件,来自于组件外部,生命周期的管理也全部在组件外部。使用hook得到的对象不一定是单例,但大部分都是全局对象。
00
相似问题