| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 2022年前端React的100道面试题的第14题:Context的使用 -> 正文阅读 |
|
[JavaScript知识库]2022年前端React的100道面试题的第14题:Context的使用 |
问题React17 关于 选项A. 它提供了一种在组件之间共享此类值的方式,而不必显式地通过组件树的逐层传递 props。 B. 通过新旧值检测来确定变化,使用了与 C. 渲染一个订阅了 Context 对象的组件,则此组件会从组件树上层中离自身最近的那个匹配的 D. 只有当组件所处的树中没有匹配到 Provider 时,以及 Provider 的 value 为 答案A、C 纠错 B. 通过新旧值检测来确定变化,使用了与 Object.is 相同的浅比较算法。(而 immutable.is 是深比较算法方式) D. 将 讲解
个人认为官方文档写得非常详细,关于如何使用以及注意事项,网上很多文档基本都是照搬的,所以我就不做重复行为了,下面也是把官方文档中几个容易造成问题的点提炼出来聊聊吧。 Provider 的 value 值 因为 context 是根据 “数据的引用标识” 来决定何时进行渲染,就是拿 例如下面的代码: class App extends React.Component { ?render() { ? ?return ( ? ? ?<MyContext.Provider value={{something: 'something'}}> ? ? ? ?<Toolbar /> ? ? ?</MyContext.Provider> ? ); } } 因此建议以对象的方式存储 value 值: class App extends React.Component { ?constructor(props) { ? ?super(props); ? ?this.state = { ? ? ?value: {something: 'something'}, ? }; } ? ?render() { ? ?return ( ? ? ?<MyContext.Provider value={this.state.value}> ? ? ? ?<Toolbar /> ? ? ?</MyContext.Provider> ? ); } } 官方称之为 “动态 Context” 的实践方式。 获取context的方式 目前版本支持获取 context 数据的方式有以下几种:
如果多个组件都依赖一批 context 数据的话,应该是在设计 context 时,就要考虑清楚对应的职责,进行数据整合。 默认值 只要没有提供 因此最简单使用 context 方式: const HiContext = React.createContext('hello'); ? class App extends React.Component { ?render() { ? ?<HiContext.Consumer> ? ? {(text) => (<h1>{text}</h1>)} </HiContext.Consumer> } }
资料Object.is() - JavaScript | MDN 来源搜索《考试竞技》微信小程序 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:01:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |