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.
- EnergyClub - Compare Price Success function
- Pair Learning (1 hour)
- Meditation (15mins)
- Podcast (30天认知训练营)
Thoughts:
- 30天认知训练营 3- 什么样的人能不被命运无常所伤害(斯多葛哲学的生活艺术)
* 我必然会遭遇负义、无礼、背信、恶意和自私自利之人——我以提醒自己这句话开始每一天。
* 斯多葛(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 :
<CompareView onSubmit={onSubmit} />
//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) 返回的函数注销监听器。