首页
学习
活动
专区
圈层
工具
发布

使用React Hooks进行状态管理 - 无Redux和Context API

React Hooks比你想象的更强大。 现在,我们将探索和开发一个自定义Hook来管理全局状态 - 比Redux更容易使用的方法,并且比Context API更高效。...Hooks基础 如果你已经很熟悉React Hooks,那么可以直接跳过这部分。 useState() 在Hooks之前,功能组件没有状态。...现在已经有了 use-global-hook 这个npm包,您可以通过包文档中的示例了解如何使用它。但是,从现在开始,我们将专注于它是怎么实现的。 第一个版本 ? 在组件中使用它: ?...我想让它更通用,可以在其他项目中使用。 我想通过参数设置 initialState。 我想使用更多函数式编程。...在组件卸载之前调用一个函数 我们了解到,使用空数组调用 useEffect(function,[])与componentDidMount() 具有相同的用途。

5.5K20

第五篇:数据是如何在 React 组件之间流动的?(下)

在本课时,我们将一起认识 React 天然具备的全局通信方式“Context API”,并对 Redux 的设计思想和编码形态进行初步的探索。...使用 Context API 维护全局状态 Context API 是 React 官方提供的一种组件树全局通信的方式。...在 React 16.3 之前,Context API 由于存在种种局限性,并不被 React 官方提倡使用,开发者更多的是把它作为一个概念来探讨。...“过时的”是 React 官方对旧的 Context API 的描述,由于个人和团队在实际项目中都并不会考虑去使用旧 Context API 来解决问题,这里我直接引用过时的文档中的 Context...假如把一个 React 项目里面的所有组件拉进一个钉钉群,那么 Redux 就充当了这个群里的“群文件”角色,所有的组件都可以把需要在组件树里流动的数据存储在群文件里。

1.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    「首席架构师推荐」React生态系统大集合

    React设置流程 React钩子 React钩子 用React Hooks和Context替换Redux React Hooks备忘单:解锁常见问题的解决方案 如何使用React Hooks获取数据?...- 用于检查React和React Native项目的桌面应用程序 storybook - UI组件开发和测试 react-styleguidist - 隔离的React组件开发环境,带有生活方式指南...的完全替代品 react-play - 使用JDK8的Nashorn渲染Play框架中的React组件 rx-react - 在RxJS中与React一起使用的实用程序 react-with-di -...- 用于测试redux异步动作创建器和中间件的模拟存储 redux-immutable - 创建一个与Immutable.js状态一起使用的Redux combineReducers的等效函数 redux-react-i18n...- 一个简单的redux中间件,用于使用JSON Schema验证redux状态值和对象类型 redux-persist - 坚持并补充redux商店 Redux教程 在ES6中使用React和Redux

    14.8K30

    在 web 环境运行 react-native 页面

    背景 近两年来react-native构造原生应用异常火爆,在app中用来替代H5页面可以明显提升用户体验,但是在一些场景是需要配套web版本的,比如分享、seo或者react-native报错时的降级方案等...如果适配web再去实现一套H5的页面会增加开发和维护成本,同一套代码能不能跑在浏览器了?...由于react-native的页面都是基于react-native基础组件和API或者自己实现的module,react-native页面的代码是完全可以复用的。...web端实现同样的基础组件和API,webpack打包js文件时做好组件映射,这样同一套业务代码可以运行在三端。...WEB配套react-native基础组件&API 业内也有这方面的实践,淘宝和和Twritter都开源了web组件和API代码就不需要自己去实现了,我选用的是淘宝的React-web,详情见https

    4.8K02

    “别更新了,学不动了” 之:全栈开发者 2019 应该学些什么?

    我们现在还有标准化的 React Context API,你应该对它有一个基本的了解。 React 生态系统将在 2019 年继续发展和演化。...随着新的 Context API 的问世和 GraphQL + Apollo 的普及,React 今年则遭遇了一点危机。很长一段时间以来,Redux 第一次被认为不是状态管理的明智选择。...新的 Context API、Redux 和 GraphQL Apollo 内置的离线客户端缓存将使 Apollo + GraphQL 在 2019 年成为 Redux 的一个重要替代品(当然,从技术上讲...新的 Context API 问世了,很多人称它为 Redux 终结者。 2019 年,你需要了解它们三者,了解它们的工作原理,以及它们可以用来解决哪些问题。...你应该学会在未来的项目中使用其中一些(不用担心,它们使用起来没有那么难,就像使用大多数其他 API 一样)。

    3.1K30

    干货 | 携程度假无线前端架构演进之路

    这是不可接受的,也是阻碍当时绝大多数公司的在原有前端项目中使用 React 的重要因素。 React 体积太大了,除非是新项目或者重构,有机会重更新分配 JS Size 预算。...2)React-Native for Web 是一个社区方案(react-native-web),不是官方迭代的项目,在 web 端的性能表现和体验,得不到充分的保障,一旦出现问题,代码难以调试和修改。...虽然我们可以抽取成 custom hooks,使之可以复用到 React-Native,但当我们在 useEffect 里使用 DOM/BOM 或 RN 特有 API 去触发 setState 时,它们又跟特定平台耦合...Model 是单独定义的,通过暴露的 React-Hooks API,在 React-DOM 组件里使用,同时它也可以在 React-Native 组件中使用。...我们通过构造上层抽象,将 Model 层和 View 层具有长期价值的、更稳固的部分,统一起来,在多个项目中共享。 如此,在每个层次上,我们都有机会去榨取最大价值,而不必迁就兼容性。

    2.5K30

    如何自动化测试 React Native 项目 (下篇) - 单元测试

    (在 vuejs 测试中可以用 vue-test-utils) Enzyme 提供了可以直接操作 React component 中的 props 和s tate 的方法,使得建造测试 context...在 React(以及 React Native ) 的开发理念中, 开发者把重点放在描述要显示的组件在不同输入时的静态状态,然后交给React去处理UI的更新。...Reducer/Action handler/Selector/Utils 测试 这几种 React Native 不同layer的测试都属于功能函数测试,一个良好的 React Native 项目应该把业务逻辑尽量都实现在这几个...Redux 的 Store 中储存着 global 的 App state Selectors 把A pp state(有时候和 component 的 prop 一起)转化成 Component(React...总结 在 Glow 的 React Native 项目测试中, 我们有大量的单元测试,包含了Component/Reducers/Action Handlers/Selectors/Utils/WWW

    3.8K21

    跨端移动应用开发解决方案 | ARES小程序转换工具1.0 正式发布

    2、实际业务 下面是前端组件部的通用交易组件项目,包含个人中心、订单、商详、购物车、结算,可快速组合接入不同的APP,项目同时具有原生、RN端、h5、小程序端,详情请查看链接(http://docs.api.jd.com...第三方库集成 对于第三方库这里以redux和react-redux这两个库来说明。这两个库分别代表了两个类型的库,redux与React毫无关系,就是一个数据管理库。...而react-redux其实是通过高阶组件的方式对React组件进行扩展,是和React紧密相关的。 对于redux这种于React运行无关的库,直接就可以集成到小程序。...美好的世界,总有遗憾 话说回来,由于小程序和React Native两个平台还是有很多差异无法抹平,有些使用上的限制必须提前说明。...在React Native端它基于社区的react-navigation,转化为小程序之后则直接使用小程序的内置路由。 这个路由组件简单易用,具备了大部分你需要的功能。 ?

    2.9K20

    从0到1打造一款react-native App(二)Navigation+Redux

    Navigation 最初在搭建RN的项目,主要是参照react-native的文档,所以很多时候还是不大清楚到底该用什么,比如路由。...顺便说一下,react-native推荐的包管理工具是yarn,最好使用yarn可以省很多事,因为我这边(ubuntu16.04)如果用npm安装的话,就不能正常使用react link xx的功能,link...navigation大体介绍到这里,之后有在项目中新增的东西,会继续同步过来。 Redux 最初在项目搭建的时候,还是像将redux引入react 的方式,去引入到react-native的。...在navigation v2.2.5中将很多api独立了出来,单独分了一个react-navigation-redux-helpers的模型。大体思路还是没有变,根页面引入react-redux。...项目地址:https://github.com/jiwenjiang/react-native-nfc

    1.1K30

    React知识图谱

    使用场景如react-redux的connect。 useContext 接收一个 context 对象(React.createContext 的返回值)并返回该 context 的当前值。...recoil是Facebook开发的,可以使用React内部的调度机制,这是redux和mobx不支持的。 recoil目前还是实验阶段,想要应用到的自己的项目中,等待正式版发了再说吧。...目前任何一个状态管理库都不是强制使用的,也有很多精小的项目不使用第三方状态管理库,而只是使用React自身的state、useContext等API就可以达到目的。...路由管理库 react-router 目前最新版本是5.2.0: 根据url与组件的映射关系切换组件的显示 Router BrowserRouter:使用 HTML5 提供的 history API...在测试和非浏览器环境中很有用,如React Native。

    1.1K20

    React组件设计实践总结05 - 状态管理

    随着 React 16.3 发布了新的 Context API,我们可以方便地在它之上做简单的状态管理, 我们应该优先选择这些原生态的状态管理方式。...例如: 简单的使用 Context API 来做状态管理: image.png 最近 hooks 用得比较爽(参考上一篇文章: 组件的思维),我就想配合 Context API 做一个状态管理器,...React inspector 上调试 强类型 基于Context API更容易实现模块化(或者分形) 需要注意的地方 没有外置的状态....其他类似的方案 unstated unstated-next 的前身,使用 setState API react-hooks-global-state 扩展 React Context API — A...的其中一种主流组织方式, 很多文章在讨论 Redux 和 mobx 时往往会沦为函数式和面向对象之争,然后就下结论说 Redux 更适合大型项目,下这种结论最主要的原因是 Redux 有更多约束(only

    2.5K31

    手写一个React-Redux,玩转React的Context API

    这个库的作用是将Redux的状态机和React的UI呈现绑定在一起,当你dispatch action改变state的时候,会自动更新页面。...而且如果每个组件都独立依赖Redux会破坏React的数据流向,这个我们后面会讲到。 React的Context API React其实提供了一个全局注入变量的API,这就是context api。...那我们可以使用context api注入这个配置: 先使用React.createContext创建一个context // 我们使用一个单独的文件来调用createContext // 因为这个返回值会被...总结 React-Redux是连接React和Redux的库,同时使用了React和Redux的API。...React-Redux主要是使用了React的context api来传递Redux的store。 Provider的作用是接收Redux store并将它放到context上传递下去。

    4.1K21

    塔荐 | 2018 年最值得关注的 JavaScript 趋势

    Next对于用React开发的server-side为主的应用也特别有用,二者在应用已经日益成为趋势。 此外,再加上 Now.js (由同一支团队开发)你就能得到超级快速的部署React应用的方式。...其中一些API甚至是专门支持GraphQL的,甚至连REST选项都没有。简而言之: 创新公司正在押注到GraphQL身上 。...但就像一位开发者指出那样,Relay/Apollo/Redux: 这些框架和它们的好处未必需要是互斥的。实际上,这几个一起使用可以提供很好的关注分离,这是web开发来说可太重要了。...这意味着你仍然可以跟Relay一起用Redux,Redux用于本地状态管理以及一些复杂的非服务器状态,然后由Relay来抓取。...Facebook开发的Flow是React开发者的优先选择,因为它很容易跟Babel集成,在React项目中也使用得很普遍。

    1.7K80

    大势 | 2018最值得关注的JavaScript趋势

    其中一些API甚至是专门支持GraphQL的,甚至连REST选项都没有。简而言之:创新公司正在押注到GraphQL身上。...但就像一位开发者指出那样,Relay/Apollo/Redux: “这些框架和它们的好处未必需要是互斥的。实际上,这几个一起使用可以提供很好的关注分离,这是web开发来说可太重要了。”...这意味着你仍然可以跟Relay一起用Redux,Redux用于本地状态管理以及一些复杂的非服务器状态,然后由Relay来抓取。...Facebook开发的Flow是React开发者的优先选择,因为它很容易跟Babel集成,在React项目中也使用得很普遍。...7.在一个项目上安装Prettier,让你的代码可读性更强。 8.在一个React项目上学习使用Jest截屏及Enzyme。

    98720

    移动开发者必备的 React Native 开发工具

    这些新的技术和工具不仅可以提高 React Native 应用的性能和开发效率,还可以帮助开发者更好地应对不同的开发场景和需求。本文将介绍 React Native 中一些新的技术和工具。...使用 React Native Debugger 可以提高开发效率和代码质量,推荐开发者在开发过程中使用。...Storybook 支持多种开发框架和平台,包括 React、React Native、Vue、Angular 等。使用 Storybook 可以提高开发效率和代码质量,推荐开发者在开发过程中使用。...React Native CLI 是一个非常重要的工具,推荐开发者在开发过程中使用。...二、写在最后好的技术和工具不仅可以提高应用的性能和开发效率,还可以让开发者更好地应对不同的开发场景和需求,希望可以和大家一起更好地理解和使用 React Native 中的新技术和工具。

    2.2K20

    React Native 开发工具推荐

    这些新的技术和工具不仅可以提高 React Native 应用的性能和开发效率,还可以帮助开发者更好地应对不同的开发场景和需求。本文将介绍 React Native 中一些新的技术和工具。...使用 React Native Debugger 可以提高开发效率和代码质量,推荐开发者在开发过程中使用。...Storybook 支持多种开发框架和平台,包括 React、React Native、Vue、Angular 等。使用 Storybook 可以提高开发效率和代码质量,推荐开发者在开发过程中使用。...React Native CLI 是一个非常重要的工具,推荐开发者在开发过程中使用。...图片二、写在最后好的技术和工具不仅可以提高应用的性能和开发效率,还可以让开发者更好地应对不同的开发场景和需求,希望可以和大家一起更好地理解和使用 React Native 中的新技术和工具。

    2.1K20
    领券