zoukankan      html  css  js  c++  java
  • React学习之路(一)

    React

    React不是一个完整的MVC框架,最多可以认为是MVC中的V(View),甚至React并不非常认可MVC开发模式

    高性能:复杂或频繁的DOM操作通常是性能瓶颈的原因,为此引入了虚拟DOM

    虚拟DOM:每当数据变化时,React会重新构建DOM树

    使用React大大降低了逻辑复杂性,意味着开发难度降低,产生bug更少

    React衍生品:React native  是React衍生出的一套框架

    React的特点和优势

    1.虚拟DOM

    2.jsx

    3.单向数据流

    4.组件化开发、高效率

    组件:同时包含html、css、js、images元素的聚合体

    react.js中有React对象,帮助我们创建组件等功能

    react-dom.js中有ReactDOM对象,渲染组件的虚拟dom为真实的dom

    jsx编译方法:1.浏览器端编译,通过引入browser、babel对script内的代码编译      2.利用webpack等开发环境进行编译,将编译好的文件引入

    render函数和vue组件里的render完全一样,在vue组件中可以不用编写render函数,这个时候可以使用template模板来编写组件的虚拟don结构,然后vue组件会自动将模板compile成虚拟dom结构放入render中执行,但是React中需要编写render函数

    组件通过React.createClass创建(es5),在es6中直接通过class关键字创建

    组件就是一个构造器,每次使用组件都相当于在实例化组件

    React的组件必须使用render函数来创建组件的虚拟dom结构

    组件使用ReactDOM.render方法将其挂载在某一个节点

    组件的首字母必须大写

    jsx是一种语法,全称:javascript xml

    即使使用了jsx语法之后,也是需要将其变编译成原生的createElement

    组件dom添加样式

    在React里的表达式的符号是‘{}’,作用和vue的表达式作用是一样的

    想给虚拟dom添加行内样式,需要使用表达式传入样式对象的方式来实现

    行内样式需要写入一个样式对象,而这个样式对象的位置可以放在很多地方,例如React.createClass的配置项中、render函数里、组件原型上、外链js文件中

    React推荐我们使用行内演示,因为React觉得每一个组件都是一个独立的整体(反正不这么写,是不是傻)

    大多数情况下还是为元素添加类名、id以使用某些样式,注意添加class类名时,因为class是关键字,所以写成className

    在React中,给组件的dom添加事件的时候,也是在行内添加的方式,事件名字需要写成小驼峰的方式,值利用表达式传入一个函数即可

    注意:在没有渲染dom时,页面没有真实dom,获取不到dom

    组件嵌套

    将一个组件渲染到某一个节点里的时候,会将这个节点里原有内容覆盖

    组件嵌套的方式就是将子组件写入到父组件的模板中,且React

    注意:React中的注释要写成{/**/}

    React中的数据承载(Props/State)

    React也是基于数据驱动的框架,组件中必然需要承载一些数据,在React中起到这个作用的是属性和状态(props & state)

    1. 属性(props) 在组件外部传入,或者内部设置,组件内部通过this.props获得

    2. 状态(state) 在组件内部设置或者更改,组件内部通过this.state获得

    属性(props)

    属性一般是外部传入的,组件内部也可以通过一些方式初始化的设置,属性不能被组件自己更改

    属性时描述性质、特点的、组件自己不能随意更改

    使组件拥有属性的方式:

    1. 在装载组件的给组件传入

    传入数据的时候,除了字符串类型,其他的都该报上表达式,但为了规范,所有的数据传递最好都包上{}

    var Gouzi = React.createClass({
    
        render(){
    
            console.log(this)
    
            return (
    
                <div>
    
                    <p>我的名字:{this.props.name}</p>
    
                    <p>我的性别:{this.props.sex}</p>
    
                    <p>我的年龄:{this.props.age}</p> 
    
                    <p>我的父亲是:{this.props.father}</p>                                             
    
                </div>
    
            )
    
        }
    
    })
    
     
    
    let info = {
    
        sex:'male',
    
        father:'狗爸'
    
    }
    
     
    
    ReactDOM.render(<Gouzi {...info} name={"大狗子"} age={26}/>,app)

    2.父组件给子组件传入

    父组件在嵌套组件的时候为子组件传入,传入的方式和上面的方式一样

    //父组件的render函数
    
    render(){
    
        return (
    
            <div>
    
                <p>父组件:</p>
    
                <hr/>
    
                <Son name={'大狗子'}/>
    
                <Son name={'二狗子'}/>
    
            </div>
    
        )
    
    }

    3. 子组件自己设置

    子组件通过getDefalutProps来设置默认的属性

    getDefaultProps的值是函数,这个函数会返回一个对象,我们在这里对象里为组件设置默认属性

    这种方式设置的属性优先级低,会被外部传入的属性值覆盖

    getDefaultProps:function () {
    
        console.log('getDefaultProps')
    
        return {
    
            name:'狗爸',
    
            sonname:'二狗子'
    
        }
    
    },
    
    //render
    
    <p>我
  • 相关阅读:
    php中的md5()的安全问题
    爆破之中文转换成字母脚本
    MYSQL数据库封装类
    SQL执行结果操作
    原生和jquery 的 ajax
    Ajax实例OR技术原理 转自 (http://blog.csdn.net/evankaka )
    JQuery常用事件
    分页原理
    JQuery中$.ajax()方法参数
    session和cookie的作用和原理
  • 原文地址:https://www.cnblogs.com/twoeggg/p/8243723.html
Copyright © 2011-2022 走看看