学习React系列(三)——Refs和Dom】的更多相关文章

这次我们来讲解第三节知识,考虑了下,先不去讲什么理论了,毕竟网上一搜一大堆,而且理论真心看不太懂啊!!! 今天我们就直接上实例喽! 大家HIGH起来!!!(想了好久,还是没舍得删这句话) 1.根据下图配置自己的文件 2.我们先用原始方法 额,忘记告诉大家做什么项目了,那就在这补上吧,咱们先做一个小Demo,既然react是FB的,那我们就做个评论框好了. 搭建一个跟这个页面一样的模型,当然你要做的更好看,就按你的来吧! 我们考虑一下,要是按照原始的方法来怎么写? var container =…
React Native不到两岁,兼容Android平台刚刚1年.我学习React Native其实也就不到1年,不算长,也不算短. Paul Graham在文章中写过:大多数人真正注意到你的时候,不是第一眼看到你站在那里,而是发现了过了这么久你居然还在那里. 我就是Paul提到的"大多数人",当React Native刚出来的时候,我就通过CSDN等一些平台了解了React Native,但是并没有真正的关注它. 过了半年多,发现React Native不但还依然存在,而且还产生了不…
性能优化 每当开发者选择将React用在真实项目中时都会先问一个问题:使用react是否会让项目速度更快,更灵活,更容易维护.此外每次状态数据发生改变时都会进行重新渲染界面的处理做法会不会造成性能瓶颈?而在react内部则是通过使用一些精妙的技巧来最小化每次造成ui更新的昂贵的dom操作从而保证性能的. 避免直接作用于DOM react实现了一层虚拟dom,它用来映射浏览器的原生dom树.通过这一层虚拟的dom,可以让react避免直接操作dom,因为直接操作浏览器dom的速度要远低于操作Jav…
一.适用于以下场景: 1.控制焦点,文本选择,或者媒体控制 2.触发必要的动画 3.整合第三方dom库 二.不要过度使用ref 如果想通过ref来改变state,那么换一种方式-变量提升可能会更好. 三.ref可以添加在dom中 ref接收一个回掉函数,该函数的传入参数为底层的dom元素,该回掉方法会在组件挂载后和移除后立即执行, React 组件在加载时将 DOM 元素传入 ref 的回调函数,在卸载时则会传入 null.ref回调会在componentDidMount 或 component…
React更新dom的依据: 1.不同类型的elements会产生不同的树 2.通过render方法中包含key属性的子元素,开发者可以示意哪些子元素可能是稳定的. 更新过程: 一.根元素类型不同:旧树被卸载,旧的Dom节点销毁,Component实例将接收componentWillUnmount()方法, 当新建一个树,新节点插入到Dom中,Component实例接收componentWillMount()然后接收componentDidMount() 所有与旧树关联的状态全部销毁. <div…
定义:高阶组件就是一个函数,且该函数接收一个组件作为参数,并返回一个新的组件. (上一篇已经说过了高阶组件可以用来解决交叉问题) 一.不要改变原始组件,使用组合 class A extends React.PureComponent{ constructor(props){ super(props); this.state={ content:"我是A" } } componentWillReceiveProps(nextProps){ this.setState({ content:…
React.Fragment portals Error Boundaries WEB组件 React.Fragment 想象一个场景,想把td包装为组件添加到table中去,代码如下: class MyTable extends React.PureComponent { render() { rejturn( <table> <tbody <tr> <MyTd></MyTd> </tr> </table> </tbod…
先来介绍一下mixins(混入) 先来看一段代码: const mixin = function(obj, mixins) { const newObj = obj; newObj.prototype = Object.create(obj.prototype); for (let prop in mixins) { if (mixins.hasOwnProperty(prop)) { newObj.prototype[prop] = mixins[prop]; } } return newOb…
提高性能可分为两方面: 一.配置层面 二.代码层面 本文只从代码层面考虑: 一.避免重复渲染 这里要说一句: 当shouldComponentUpdate返回false的时候不触发render函数也就无法造成渲染 触发render之后react发现原来的dom与现在的dom一致,将不触发更新 如何避免重复渲染呢? 其实就是在shouldComponentUpdate方法中进行if判断,特定条件下才允许返回true class CounterButton extends React.Compone…
受控组件:通过组件的状态与属性的改变来控制组件 不可控组件:直接通过底层的dom来控制组件(具体来说就是通过绑定再底层dom上的方法来实现的,比如说ref,onChange) 受控组件 function validate(name, email, password) { // we are going to store errors for all fields // in a signle array const errors = []; if (name.length === 0) { er…