2018-05-10

Done

  • Work 7 hours
    • EnergyClub - Compare Price Success function
      • CSS : mobile adjustment
      • How container's prop works
      • Make a component for all Compare function page.
  • Pair Learning (1 hour)
  • Meditation (15mins)
  • Podcast (30天认知训练营)

Thoughts:

  • 30天认知训练营 3- 什么样的人能不被命运无常所伤害(斯多葛哲学的生活艺术)
    • A Guide to the Good Life: The Ancient Art of Stoic Joy
* 我必然会遭遇负义、无礼、背信、恶意和自私自利之人——我以提醒自己这句话开始每一天。
* 斯多葛(Stoic)
第一,总是设想最坏情形,假设一切已被命运夺走。 
   罗曼罗兰说,“真正的勇气是知道生活的真相,却仍然热爱生活。” 他肯定是个斯多葛。 
第二,控制能控制的,无法控制的要放手。 
   什么是我们无法控制的?环境。什么是我们能控制的?我们对环境的态度。
   人们想改变世界,斯多葛想改变自己。
第三,对抗命运对未来的安排,但接受已成现实的过去与现在,仿佛它是宿命。
   第四,克己。 
    假想最坏情形可能发生之外,斯多葛会往前再走一步。塞雷卡说有时得按照最坏情形已经发生那样去生活。光假想失去全部财富还不够,还要时不时真正过苦日子,给自己主动制造苦难,忍饥挨饿。
   推崇克己,是为了获得意志力、勇气和自制力。 
第五,反思。 
   斯多葛也有三省吾身:今天改正了什么?今天抵制了什么?今天有什么进益?
斯多葛入世,积极参与生活,但集参与者与旁观者两个角色于一身,一边作为,一边又观察自己的作为,并按斯多葛准则来评估: 
* 你有没有设想过最坏情形? 
* 你有没有区分能控制与不能控制的事情? 
* 你有没有内化目标? 
* 你是否沉湎于过去,而忘了注视未来? 
* 你有没有克己? 
* 对一个斯多葛来说,死亡是终极测试。一个标准的斯多葛坦然接受突然来临的死亡,因为他每一天都是向死而生,因此已经过了自己想过的一生,随时可死。  
  • 30天认知训练营 2- 什么是思考,怎样更好的思考

Intuition Pumps and Other Tools for thinking(直觉泵与其他思维工具)

意向(intentionality): 心智在场,表达,代表事物的能力
意识(consciousness):知道“自我”
意志(will):就是自由选择
机器人就是人类自己,基因的人类的造物主,从基因不得不赋予人类学习能力,授权自主决策的那一天起,基因失控,人类自立,就成为注定的结果。
  • 30天认知训练营 5- 为什么你应该读历史
  • The lessons of History, by Will & Ariel Durant(历史的教训)
我们能从历史上学到什么?
第一,一切皆有可能,没有必然
第二:历史不会重复,但重视押韵 -- 最黑暗处会有光明,极光明处黑暗滋生,仿佛在循环,但也只是事后才能确定
第三:人靠不住,制度也靠不住 -- 圣人不死,大盗不止
你的有时宽容,有时严苛,时而忠诚,时而离心,有时为鹰,有时为鸽
我们今天所传承的遗产比此前任何时候都更为丰富。它比古代雅典政治家伯利克里的丰富,因为包含了他以后的希腊文化精华,比达芬奇丰富,因为包含文艺复兴的其他巨匠,比伏尔泰的丰富,因为包含了全部启蒙运动的结晶。如果历史有进步可言,那不止因为我们生下来时比前任更健康,更美好,更聪明,而是因为我们降生于更丰富的遗产之中,被更高的底座托起,与此前只是的艺术的全部成就为基,随着他上升。
所谓历史,就是这遗产的创造和记录,而所谓进步,就是它的拓展。保存。传承和使用。过往不再只是一连串灾难记录,历史学家也无需悲叹在人类纯在中无从找到意义
  • 30天认知训练营 6- 怎样才能达到任何目的

Learned

  • English:
    • occidental culture vs oriental

Draft:

  • How container's prop works.
const mapDispatchToProps = {
  onSubmit
}
export default connect(null, mapDispatchToProps)(CompareView)


//in actually works as :


//and need to define: PropsType
CompareView.propTypes = {
  onSubmit: PropTypes.func.isRequired
}
  • Rudex

Reducer必须是一个纯函数,他根据action处理state的更新,如果没有更新或遇到未知action,则返回旧state;否则返回一个新state对象。注意:不能修改旧state,必须先拷贝一份state,再进行修改,也可以使用Object.assign函数生成新的state。另外,state参数需先进行初始化。实例代码如下:

//初始状态
let initialState = {hiddenClass: 'g-hidden',currentIndex:0};
let sliderReducer = function (state = initialState, action) {
    switch(action.type){
        case sliderAction.SHOW_SLIDER:
            return {hiddenClass: '',currentIndex:action.index};
        case sliderAction.RIGHT_SLIDER:
            if(state.currentIndex == action.length-1){
                return Object.assign({}, state, {currentIndex:0});
            }else{
                return Object.assign({}, state, {currentIndex:Number.parseInt(state.currentIndex)+1});
            }
        default:
            return state;
    }
}

export default sliderReducer;

通过查看Redux源码得知,新旧state的比较只是对引用地址的比较,如果reducer只是返回旧state(即previousStateForKey)的更新,新state(nextStateForKey)实际上和旧state引用的都是同一块内存地址,所以无论如何更改,新旧state始终保持相同。这就是为什么reducer必须是纯函数的原因。

  • Store 是把Action、Reducer联系到一起的对象。Store 有以下职责:

1.维持应用的 state;
2.提供 getState() 方法获取 state;
3.提供 dispatch(action) 方法更新 state; ---- [图片上传失败...(image-eb11c3-1525911738947)]
UI更新state 的唯一途径,通过dispatch方法发起action,唤起对应的reducer更新state。
4.通过 subscribe(listener) 注册监听器;
5.通过 subscribe(listener) 返回的函数注销监听器。

你可能感兴趣的:(2018-05-10)