const

使用Redux管理你的React应用

跟風遠走 提交于 2020-03-25 04:14:54
原文作者:http://www.cnblogs.com/Leo_wl/p/4780750.html 因为redux和react的版本更新的比较频繁,博客园这里用的redux版本是1.0.1,如果你关心最新版本的使用技巧,欢迎来我的Github查看(https://github.com/matthew-sun/blog/issues/18) ,我会在这里进行持续的更新和纠错。 React是最好的前端库,因为其发源于世界上最好的后端语言框架。 ---信仰 4.0 will likely be the last major release. Use Redux instead. It's really great. —Flummox框架作者 acdliteAndrew Clark 为什么使用React还需要使用别的框架来搭配? React的核心是使用组件定义界面的表现,是一个View层的前端库,那么在使用React的时候我们通常还需要一套机制去管理组件与组件之间,组件与数据模型之间的通信。 为什么使用Redux? Facebook官方提出了FLUX思想管理数据流,同时也给出了自己的 实现 来管理React应用。可是当我打开 FLUX 的文档时候,繁琐的实现,又臭又长的文档,实在难以让我有使用它的欲望。幸好,社区中和我有类似想法的不在少数,github上也涌现了一批关于实现FLUX的框架

ES6 对象的解构赋值

馋奶兔 提交于 2020-03-24 23:34:27
对象是无序的,必须使用属性名去匹配 因此解构赋值时变量名必须与对象的属性名保持一致 const obj={ a:1, b:2 }; let {a,b}=obj; 比较复杂的结构条件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <script> const person={ name:"cyy", age:10, friends:[{ name:"cyy2", age:20 },{ name:"cyy3", age:30 },{ name:"cyy4", age:40 }] }; const {name}=person;//name "cyy" const {age}=person;//age 10 //只能取到friend1,不能取到friends const {friends:[friend1]}=person;//friend1 {name: "cyy2", age: 20} const {friends:[,friend2]}=person;//friend2 {name: "cyy3", age: 30} const {friends:[,,friend3]}=person;//friend3 {name: "cyy4",

mongdb

跟風遠走 提交于 2020-03-24 23:07:57
https://www.jianshu.com/p/7241f7c83f4a 启动mongodb是 mongod // npm install mongodb --save //安装import mongodb from "mongodb" //引包 const MongoClient = mongodb.MongoClient; const url = 'mongodb://localhost:27017/edu'; //edu数据库,没有会自动新建 MongoClient.connect(url, {useNewUrlParser:true}, (err, db) => {   if (err) {}   //操作数据库 //注意这里是3.x的APi 和2.X的不一样     db.db('edu').collection('adverts')     .insertOne(req.body, (err, result) => {       if(err){}       res.json({       success: true     })   })   //关闭连接   db.close(); }); http://www.mongoosejs.net mongoose:封装好的mongodb 1. 安装 npm install mongoose 2. //

ES6学习笔记-let和const命令

隐身守侯 提交于 2020-03-24 21:43:03
3 月,跳不动了?>>> ES6简介 ECMAScript 6.0(简称 ES6)的第一个版本在 2015 年 6 月发布,正式名称就是《ECMAScript 2015 标准》(简称 ES2015),标准在每年的 6 月份都会发布一次,命名规则为:ES+年份,ES6涵盖了ES2015-ES2019的所有标准,因此ES6是一个历史名词,含义是 5.1 版(2011 年,ECMAScript 5.1 版发布)以后的 JavaScript 的下一代标准。 重要案例 此页面案例参考于: ECMAScript 6 入门 ES6 规定let、const语句不出现变量提升,防止在变量声明前就使用这个变量,从而导致意料之外的行为。 var tmp = 123; if (true) { tmp = 'abc'; // ReferenceError let tmp; } 上面代码中,存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。(如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域) ES6的块级作用域 ES5 只有全局作用域和函数作用域,let实际上为 JavaScript 新增了块级作用域。 // IIFE 写法 (function () { var tmp =

最近帮朋友写了一个百度竞价关键词快速分词(分组)工具,支持与或逻辑分组,附源码和工具下载链接

做~自己de王妃 提交于 2020-03-24 20:56:31
需求很简单: 有一堆关键词(短句),需要给它们分组。分组逻辑很简单:给出一些归类词语,把包含这些归类词语的关键词归到一类。 归类词语需要支持简单的与或算术逻辑,例如“日记|博客”,意思就是把包含日记或者博客关键词归到一类。 例如这两个关键词都符合归类要求:日记软件,博客工具 又如:“社保&药店”,意思是把包含社保又包含药店的关键词归到一类。 例如:北京的社保药店就符合归类要求,但如果只是北京社保局就不符合归类要求 再如:“(日记|博客)&(社保&药店)”,意思是把即符合“日记|博客”归类要求,又符合“社保&药店”归类要求的关键词归到一类。 一个实际例子: 现在有下面的关键词: 附近专业保洁公司 北京清洁公司 家政公司 北京好的家政公司 保姆 家教公司 有名的家政 口碑好的保姆 归类词语如下: (专业|好的|有名)&(清洁|家政)&公司 北京&家政 附近 保姆 家政|清洁 分类结果如下: 这是另一个案例分词结果截图: 其实这个需求在linux下直接用grep工具加上简单的shell还是很容易做的,但让我朋友为了这个从头学shell和linux不太现实,所以我帮他做了这个工具。如果有人有兴趣也可以去下载: 下载地址: 链接:https://pan.baidu.com/s/1r6YR8qJGOBxvA9GDPsevzw 提取码:8dmn =========================

如何实现一个parseInt

放肆的年华 提交于 2020-03-24 16:09:40
如何实现一个parseInt function(string, [radix]) {} 如果string不为字符串类型, 则先将string转化为字符串类型 string会忽略前后的空白 依次解析字符, 如果字符不是指定基数中的字符( 例如:2进制中的3、 10进制中的'f' )则停止解析( 首字符为'+'或'-'时除外 ), 返回已经解析好的整数 如果无法解析为整数, 则返回NaN radix 默认值不为10, 在radix为undefined、0或者没有指定时, 做以下处理 如果string以'0X'或'0x'开头时, 基数为16 如果string以'0'开头时, 基数为8或者10(每个浏览器的具体实现不同, es5规定此时为10) 如果string以其他任何字符开头时, 基数为10 radix的范围为2-36 不考虑进制radix 代码实现 const _parseInt = (str, radix) => { if (typeof str !== 'string') str = String(str) str = str.trim() const regex = /^(?<fuhao>[\+|\-]*)(?<num>\d+)/ if (!regex.test(str)) return NaN const groups = str.match(regex).groups

40行程序把Vue3的响应式集成进React做状态管理

痞子三分冷 提交于 2020-03-24 11:47:42
本文参考原文- http://bjbsair.com/2020-03-22/tech-info/2095/ 前言 vue-next是Vue3的源码仓库,Vue3采用lerna做package的划分,而响应式能力@vue/reactivity被划分到了单独的一个package中。 如果我们想把它集成到React中,可行吗?来试一试吧。 使用示例 话不多说,先看看怎么用的解解馋吧。 // store.ts import { reactive, computed, effect } from '@vue/reactivity'; export const state = reactive({ count: 0, }); const plusOne = computed(() => state.count + 1); effect(() => { console.log('plusOne changed: ', plusOne); }); const add = () => (state.count += 1); export const mutations = { // mutation add, }; export const store = { state, computed: { plusOne, }, }; export type Store = typeof store;

大数计算

ぐ巨炮叔叔 提交于 2020-03-24 11:29:54
#include<iostream> #include<stdint.h> #include<algorithm> #include<map> #include<set> #include<vector> #include<queue> #include<stack> #include<math.h> #include<iostream> #include<string> #include<iomanip> #include<algorithm> using namespace std; #define MAXN 9999 #define MAXSIZE 10 #define DLEN 4 class BigNum { private: int a[500]; //可以控制大数的位数 int len; //大数长度 public: BigNum() { len = 1; //构造函数 memset(a,0,sizeof(a)); } BigNum(const int); //将一个int类型的变量转化为大数 BigNum(const char*); //将一个字符串类型的变量转化为大数 BigNum(const BigNum &); //拷贝构造函数 BigNum &operator=(const BigNum &); //重载赋值运算符,大数之间进行赋值运算 friend

JS 常用正则表达式备忘录

假装没事ソ 提交于 2020-03-23 22:16:56
3 月,跳不动了?>>> 匹配正则 使用 .test() 方法 let testString = "My test string" ; let testRegex = /string/ ; testRegex.test(testString); 匹配多个模式 使用操作符号 | const regex = /yes|no|maybe/ ; 忽略大小写 使用 i 标志表示忽略大小写 const caseInsensitiveRegex = /ignore case/i ; const testString = 'We use the i flag to iGnOrE CasE' ; caseInsensitiveRegex.test(testString); // true 提取变量的第一个匹配项 使用 .match() 方法 const match = "Hello World!" .match( /hello/i ); // "Hello" 提取数组中的所有匹配项 使用 g 标志 const testString = "Repeat repeat rePeAT" ; const regexWithAllMatches = /Repeat/gi ; testString.match(regexWithAllMatches); // [ "Repeat" , "repeat" ,

Elements & MyVector 2016 4 8 homework

大城市里の小女人 提交于 2020-03-23 18:52:26
#include<iostream> #include<string> using namespace std; class Elements{ private: int value; static int numberOfObjects; public: Elements(); Elements(const int &value);//set value Elements(const Elements &elem); ~Elements();//descructor Elements & operator=(const Elements &elem);//assignment Elements & operator=(const int &value);//assignment friend istream& operator>>(istream& is, Elements & elem); //input one integer, and set the value friend ostream& operator<<(ostream& os, const Elements & elem); //output one integer to ostream void setValue(const int &value); //set value int getValue(