TransitionGroup配合CSSTransition
回到文档中,我们可以看到有react-transition-group有**四个组件:Transition、CSSTransition、SwitchTransition、TransitionGroup**。
上一篇笔记我们学习了使用CSSTransition实现单个元素的动画效果。
如果我们想实现多个元素之间的动画效果,就要**使用TransitionGroup配合CSSTransition**:TransitionGroup写在 所有被控制的 DOM元素/组件 的外部,管理所有;CSSTransition写在 具体(单个) DOM元素/组件 的外部,管理单个动画效果。
TransitionGroup文档和例子
使用react-transition-group实现动画
复习:三目运算符b?x:y对于条件表达式b ? x : y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。
Charles代理Chrome抓取localhost的包
慕课实战遇到的问题在React中想使用Charles实现接口数据模拟。发现两个问题:1. Charles无法代理Chrome,所以一开始没抓到chrome的包。2. Charles无法抓localhost的包,导致无法实现接口模拟。
React 高级内容(3)
render函数必须存在所有的生命周期函数都可以没有,但render函数必须存在,否则报错。原因:组件时继承自react的Component的,其中内置了其他所有的生命周期函数,唯独没有render函数。所以我们的render函数是必须自己定义的。
React中的虚拟DOM
面试: 虚拟DOM 是什么,有什么用总结:
虚拟DOM 就是一个JS对象,用它来描述 真实的DOM。
使用 虚拟DOM 有助于极大提升性能:React对性能的提升在于减少了 真实DOM对象 的生成与比较,取而代之的是使用 虚拟DOM(JS对象) 来完成数据改变后的生成与比较。而用JS形成一个 JS对象 性能损耗非常小,生成一个 DOM元素 性能损耗大,涉及DOM的操作都很耗性能。(具体可看下面 例子 的“第二次优化”)
有了 虚拟DOM 使得跨端应用(React Native)得以实现。(因为像是Android、ios、React Native这些原生应用里是没有 真实DOM 的 )
围绕 React 衍生出的思考
声名式开发不同于原生 JS 的 命令式开发 , React 是声名式开发。 命令式开发 更关注 DOM 的每一步挂载,而 声名式开发 更在意数据的改变,只操作 数据,不关心 具体要如何 操作 DOM,改变数据以后 React 会自动帮你完成 DOM 挂载等步骤。