react 中的 context 使用方法

作者 : 开心源码 本文共900个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共201人阅读

Contex 的 API 在新 react 版本中变动还是很大的,我们这里通过一个实例为大家讲解一下,假如以前没有接触过 context ,也可以借此机会理解一下 context 的强大之处。首先大家要明白少量概念,首先是 react 组件间传递数据是通过 props 向下(也就是想子组件传递),是单向传递的,从父级一层一层地通过 props 地向下传递到子子孙孙,有的时候我们组件一层一层的嵌套多层,这样这种方式一层一层传递麻烦,我们可不可以进行跃层传递,这就会用到 context。

建是我们创立简单的登录登出页面,

这定义 viewer 变量,未登录时其为 null,登录后为客户名,而后创立 logIn 和 logOut 方法分别对应登录和注销按钮。

下面代码相信大家并不陌生,一看就懂我就不赘述了,值得说是一下 Fragment 这个新特性,他的好处就是不会带来多余的 div。

看一下效果

而后我们在实际开发时,会对代码进行整理,将 LoginForm 拆分出来作为组件使用,而后再将 LoginForm 放 nav 组件中,这样从页面到 LoginForm 组件传递数据我们需要跨越 nav 组件,假如将少量变量或者方法一层一层传递显得很麻烦,例如先传给 Nav 组件,而后再传递给 LoginForm 组件。

我们这里就会用到 context ?这方法,先我们需要创立一个 context 对象,这个对象提供 provider 和 consumer ,通过名字应该不陌生,我们 java8 就看到相似的 API

而后创立我们 Provider 组件,从名字我们可以看出他是数据提供者,负责定义共享数据,在 Prodiver 组件中 ?value 属性用于定义会共享到其包含组件的值,这里包含 viewer 属性和 logIn 和 logOut 两个方法,注意包含子元素的标签为<context 名称.Provider>

而后我们修改刚刚提取出来的组件 LoginForm 在这里假如我们想使用 context 我们就需要将其内容包含在<context名称.Consumer> 这对标签中,标签接受一个函数,value 作为值会传递过来一遍我们调用

而后在最后调用Nav(包含LoginForm>的组件时,需要用 Provider 标签包裹一下。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » react 中的 context 使用方法

发表回复