redux

Apollo Client Cache vs. Redux

自作多情 提交于 2020-08-19 06:05:29
问题 I'm trying to migrate from Redux Store to use Apollo Client Cache that comes with Apollo Graphql Client. One of the key features that sets Apollo Client apart from other data management solutions is its normalized cache . Just by setting up Apollo Client, you get an intelligent cache out of the box with no additional configuration required. With Redux we have to write actions, types and dispatch actions based on the response received from the side-effect and set the data in the store using

redux 使用redux-thunk把switch从代码里踢出去

假装没事ソ 提交于 2020-08-19 05:42:18
一些插件介绍 https://www.cnblogs.com/vvjiang/p/9505646.html 主要思想是将所有的有效修改进行合并 使用redux-thunk插件主要是为了能够支持异步, 以及可以传入函数 thunk的源码, 支持传入函数 function createThunkMiddleware(extraArgument) { return ({ dispatch, getState }) => next => action => { if (typeof action === 'function') { return action(dispatch, getState, extraArgument); } return next(action); }; } const thunk = createThunkMiddleware(); thunk.withExtraArgument = createThunkMiddleware; export default thunk; 优点是不需要各种switch了, 使用起来会简单不少, 但是过于灵活也使得不小心就会出现一些bug... 比如一般而言可以在switch分action写log, 查错也简单, 但是这种方式就是直接合并对象, 增加了调试成本.... import React, { useState } from

前端架构 101(四):MVC 的不足与 Flux 的崛起

霸气de小男生 提交于 2020-08-19 03:31:56
李熠:前端架构 101(一):在谈论它们之前我们需要达成的共识 ​ zhuanlan.zhihu.com 李熠:前端架构 101(二): MVC 初探 ​ zhuanlan.zhihu.com 李熠:前端架构 101(三):MVC 启示录:模块的职责,作用域和通信 ​ zhuanlan.zhihu.com MVC 的不足 事件 在前几篇中,我演示了一个前端 Backbone.js MVC 框架用于解决实际问题的例子。但 MVC 依然存在几个问题 不可预测:当一个事件发生之后,你并不知道会有谁响应这个事件,是单个对象还是多个对象会响应这个事件 级联修改:当一个事件发生之后,A 组件在接收到事件之后在响应的过程中,还可能发出其他的事件触发后续的修改,你并不知道这个事件会在何处结束,会造成什么样的结果。这也和上一条「不可预测」相对应 响应顺序:如果存在多个对象响应同一个事件的话,有时候对响应的顺序是有要求的,某些变更不可以出现在其他的变更之前 有条件响应:对于传播方而言,并非希望所有的时间都一视同仁的广播出去;对于消费方而言,也并不希望一视同仁的响应所有的事件 你可能会认为事件机制存在的问题是否只存在于 Backbone.js 中,那 AngularJS 这个 MVC 框架会不会好一些呢? 首先 AngularJS(AngularJS 代指 1.x 版本,Angular 代指 2

为什么使用Redux而不是Facebook Flux? [关闭]

匆匆过客 提交于 2020-08-18 14:10:39
问题: I've read this answer , reducing boilerplate , looked at few GitHub examples and even tried redux a little bit (todo apps). 我已经阅读了 这个答案 , 减少了样板 ,看了几个GitHub示例,甚至尝试了redux(todo apps)。 As I understand, official redux doc motivations provide pros comparing to traditional MVC architectures. 据我了解, 官方redux doc动机 提供了与传统MVC架构相比的优点。 BUT it doesn't provide an answer to the question: 但它没有提供问题的答案: Why you should use Redux over Facebook Flux? 为什么你应该使用Redux而不是Facebook Flux? Is that only a question of programming styles: functional vs non-functional? 这只是编程风格的问题:功能与非功能? Or the question is in abilities/dev

React Native 一站式开发解决方案

99封情书 提交于 2020-08-18 06:37:20
分享一个RN快速开发库: react-native-easy-app 。一款为React Native App开发提供基础服务的纯JS库( 支持 IOS & Android ),可以为开发者开发项目提供强有力的支持,可以大幅度提高编码的效率,特别是在项目搭建初期,至少可以为开发者减少30%的工作量。 由于前面的文章已经做过介绍,在这里就不详细介绍了,通过本开源库,你可以有以下高级的“操作”: 可以像访问内存对象一样访问AsyncStorage 相关文章: 一分钟实现,一个RN持久数据管理器 ; react-native-easy-app 详解与使用之(一) AsyncStorage 只需要几十行代码就能实现,一个完整的app与服务器的Http请求交互 相关文章: 二十分钟封装,一个App前后台Http交互的实现 ; react-native-easy-app 详解与使用之(二) fetch 一行配置 + 基础组件的使用就即可以实现,UI自动屏幕适配 相关文章: 详解与使用之(三) View,Text,Image,Flatlist ; react-native-easy-app 详解与使用之(四)屏幕适配 另附有多个不同版本的Demo供大家参考用法: Sample Sample_Mobx Sample_Redux 以下为Sample_Redux示例程序的UI部分截图:

Flutter在PLUS业务中的探索和实践

你。 提交于 2020-08-18 02:08:37
京东零售技术 • 2020-05-09 pm10:49 • 文档 2016年京东为向核心客户提供更优质的购物体验,特别推出京东PLUS会员,旨在全方位提升和丰富用户网购体验,目前京东PLUS会员已成为电商行业付费人数最多的会员体系。作为PLUS的前端开发,我们思考最多的就是如何让页面更快更好的呈现在用户面前,如何用技术为用户提供最好的购物体验。 为什么会开始尝试Flutter 目前PLUS业务前端技术栈选择是React,虽然我们在React性能优化上做了很多工作,但是由于WebView本身的局限性,和原生相比H5页面的渲染效率和 JavaScript 的执行能力都差一些,所以页面白屏时间长,加载速度和用户体验都比不上原生,同时国内各大厂商机型适配工作浪费了太多开发者的精力。 然后我们尝试了Js2Native的解决方案——React Native(后面简称RN),RN相对于WebView来说,性能和渲染效率都得到了不小的提升,但由于 RN 代码是通过 JS 桥接的方式转换为原生的控件,所以受各个系统间的差异影响非常大,虽然可以开发一套代码,但对各个平台的适配却非常的繁琐和麻烦。 2018 年 12 月初,Google 正式发布了开源跨平台 UI 框架 Flutter 1.0 Release 版本,引起了行业巨大的关注,我们也积极调研在PLUS业务中使用Flutter的可能

Rematch的深入学习与实战应用(一),简易数字计数器

扶醉桌前 提交于 2020-08-17 14:00:52
摘要    近期在优化团队代码,发现Redux重复使用的代码过多。 经过调研发现了Rematch库:Redux是一个出色的状态管理工具,并且有着健全的中间件生态以及出色的开发工具;Rematch是没有boilerplate的Redux最佳实践。移除了声明action类型、action创建函数、thunks、store配置、mapDispatchToProps、sagas等东西,大大简化了代码。故今天就来分享rematch的用法。 Rematch的用法 1.初始化全局设置store    I nit(config) :初始化Rematch,在init中可以配置属于自己的使用的config参数。    Models :导出和存储项目的状态管理,models详细的参数说明可以到官网查看文档进行阅读。    Plugins :用来自定义init配置或背部hooks,可以添加功能来设置Rematch,更多的插件可以阅读官网插件的API进行学习。    Redux :可以对redux设置访问以及覆盖redux方法的选项,可以保留redux中优秀的方法等。 import { init } from '@rematch/core'; import thunk from 'redux-thunk'; import immerPlugin from '@rematch/immer'; import

从零搭建 React 开发 H5 模板

夙愿已清 提交于 2020-08-17 12:55:55
本文相关代码地址: github 效果展示: react-demo 项目创建 创建项目文件夹 mkdir react-demo cd react-demo npm init -y 复制代码 依赖安装 yarn add react react-dom yarn add webpack webpack-cli webpack-dev-server webpack-merge babel-core babel-loader babel-polyfill babel-preset-env babel-preset-react babel-preset-stage-0 cross-env file-loader jsx-loader css-loader style-loader url-loader less less-loader --dev 复制代码 webpack 配置 区分开发环境 development 和生产环境 production 配置 分别创建对应的 配置文件 antd-mobile 按需加载 安装插件 yarn add babel-plugin-import -D 复制代码 修改 babel.config.js 配置 module .exports = { presets : [ "@babel/preset-env" , "@babel/preset-react" ]

How to reset state of Redux Store when using configureStore from @reduxjs/toolkit?

久未见 提交于 2020-08-17 05:50:46
问题 I have seen solutions for clearing/resetting the store after logout but did not understand how to implement the same functionality for the following way of setting up the redux store. Store.js: import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit' import authReducer from './ducks/authentication' import snackbar from './ducks/snackbar' import sidebar from './ducks/sidebar' import global from './ducks/global' import quickView from './ducks/quickView' import profileView from '.

How to reset state of Redux Store when using configureStore from @reduxjs/toolkit?

独自空忆成欢 提交于 2020-08-17 05:50:20
问题 I have seen solutions for clearing/resetting the store after logout but did not understand how to implement the same functionality for the following way of setting up the redux store. Store.js: import { configureStore, getDefaultMiddleware } from '@reduxjs/toolkit' import authReducer from './ducks/authentication' import snackbar from './ducks/snackbar' import sidebar from './ducks/sidebar' import global from './ducks/global' import quickView from './ducks/quickView' import profileView from '.