上一节 的我们有了 appState 和 dispatch: let appState = { title: { text: 'React.js 小书', color: 'red', }, content: { text: 'React.js 小书内容', color: 'blue' } } function dispatch (action) { switch (action.type) { case 'UPDATE_TITLE_TEXT': appState.title.text = act…
我们接下来会继续优化我们的 createStore 的模式,让它使我们的应用程序获得更好的性能. 但在开始之前,我们先用一节的课程来介绍一下一个函数式编程里面非常重要的概念 —— 纯函数(Pure Function). 简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数.这么说肯定比较抽象,我们把它掰开来看: 函数的返回结果只依赖于它的参数. 函数执行过程里面没有副作用. 函数的返回结果只依赖于它的参数 const a = 1 const fo…
从这节起我们开始学习 Redux,一种新型的前端“架构模式”.经常和 React.js 一并提出,你要用 React.js 基本都要伴随着 Redux 和 React.js 结合的库 React-redux. 要注意的是,Redux 和 React-redux 并不是同一个东西.Redux 是一种架构模式(Flux 架构的一种变种),它不关注你到底用什么库,你可以把它应用到 React 和 Vue,甚至跟 jQuery 结合都没有问题.而 React-redux 就是把 Redux 这种架构模式…
不知不觉地,到这里大家不仅仅已经掌握了 Redux,而且还自己动手写了一个 Redux.我们从一个非常原始的代码开始,不停地在发现问题.解决问题.优化代码的过程中进行推演,最后把 Redux 模式自己总结出来了.这就是所谓的 Redux 模式,我们再来回顾一下这几节我们到底干了什么事情. 我们从一个简单的例子的代码中发现了共享的状态如果可以被任意修改的话,那么程序的行为将非常不可预料,所以我们提高了修改数据的门槛:你必须通过 dispatch执行某些允许的修改操作,而且必须大张旗鼓的在 acti…
经过了这么多节的优化,我们有了一个很通用的 createStore: function createStore (state, stateChanger) { const listeners = [] const subscribe = (listener) => listeners.push(listener) const getState = () => state const dispatch = (action) => { state = stateChanger(state,…
接下来两节某些地方可能会稍微有一点点抽象,但是我会尽可能用简单的方式进行讲解.如果你觉得理解起来有点困难,可以把这几节多读多理解几遍,其实我们一路走来都是符合“逻辑”的,都是发现问题.思考问题.优化代码的过程.所以最好能够用心留意.思考我们每一个提出来的问题. 细心的朋友可以发现,其实我们之前的例子当中是有比较严重的性能问题的.我们在每个渲染函数的开头打一些 Log 看看: function renderApp (appState) { console.log('render app...')…
在上篇博客(geotrellis使用初探)中简单介绍了geotrellis-chatta-demo的大致工作流程,但是有一个重要的问题就是此demo如何调取数据进行瓦片切割分析处理等并未说明,经过几天的调试.分析.源代码研读终于大致搞明白了其数据调取方式,下面简单介绍. 经过调试发现系统第一次调用数据的过程就是系统启动的时候调用了initCache方法,明显可以看出此方法是进行了数据缓存,那必然牵扯到数据的调取,整个过程清晰明了,只新建了一个RasterSource类,并调用了相关方法.明显数据…
Store作为数据的载体,通过下面的方法可以获得Store内的数据; Ext.define('haomlGeimjTongjGrid_store_data', { extend: 'Ext.data.Model', fields: ['id', 'jizcode', 'name', 'gaokgl', 'gaokdl', 'dikgl', 'dikdl', 'liezy', 'mein', 'hem'] }); var haomlGeimjTongjGrid_store = Ext.create…
在store.js中 export default new vuex.Store({ // 首先声明一个状态 state state:{ pcid: '', postList: [], } //更新状态 mutations:{ changepcId(state, _pcid){ state.pcid = _pcid; }, changepostList(state, _postList){ state.postList = _postList; Cookies.set('postList', _…
一.双花括号{{}}插值和MVVM模式 1.1 体会{{}}插值 index.wxml的标签不是html的那些标签,这里的view就是div. {{}}这样的插值写法,叫做mustache语法.mustache是胡子的意思,因为{{}}像胡子. <view class="container"> <view class="title"> 我是首页 {{1 + 1}} {{a}}年! </view> </view> 要在同…