redux的前身Flux https://zhuanlan.zhihu.com/p/38050036
Flux的一整套抽象(action,dispatcher,store),在单向数据流的基础上可以提高应用的可维护性和代码的可预测性。然而,全局action+多store的架构面对复杂的应用依然不能很好地解决复杂数据流的问题,(特点亦是缺点)waitFor()虽然可以满足自定义多store接收action的顺序,但是它会让数据流变得复杂,难以维护。
Redux作为Flux的继承者,单store的架构其实就很好地避免了上述问题0。
redux实现
function createStore( reducer){ const listeners = [] const subscribe = (listener) => listeners.push(listener) const getState = () => state const dispatch = (action) => { state = reducer(state, action) // 覆盖原对象 listeners.forEach((listener) => listener()) } return { getState, dispatch, subscribe } } function reducer (state,action){ if(!state){ return {state默认初始值对象} switch(action.type) case 对状态增删改查的操作名称
操作代码...
return { ...state,//修改的值将覆盖state中对应对象,这里利用...展开符对对对象浅拷贝的原理,
//对appstate的修改形成一种共享结构, title: { ...state.title, color: action.color }} } ... defalut:{ return state} }
。
另外,并不需要担心每次修改都新建共享结构对象会有性能、内存问题,因为构建对象的成本非常低,而且我们最多保存两个对象引用(oldState
和 newState
),其余旧的对象都会被垃圾回收掉
redux应用,react-redux
react基于redux原理,以react组件式开发封装了实现这一模式组件,
给组件统一将store注入contex的组件Provider,连接父组件store并注入待包装组件的Connect,
js多线程处理webworker:http://www.ruanyifeng.com/blog/2018/07/web-worker.html
本周微信小程序改代码,收获:
1:用户交互行为在样式上的改变,应该添加动画平移过渡
2:this.setdata({})
1.更新复合结构的某个属性值的写法,因为小程序不支持. =运算符,更新值要么按声明时的结构全部更新,要么就以这种方式更新部分属性,否则数据更新无效。
2.更新未取到值,将被设为undefined,it is invalid
3.小程序超出限制大小时,在全部配置文件设置分包上传
分包之间文件不可访问,引入。page为页面路径,tab栏的文件必须在这声明,默认第一项为小程序启动页。也可以配置入口文件。一个页面嵌套你多个页面,可以将其余文件作为数组,循环路径名以navigator载入访问。
4.图片格式 url base64 blob 之间的相互转换
https://www.cnblogs.com/YMaster/p/9496068.html
https://blog.csdn.net/qdmoment/article/details/98213994