美文网首页前端开发
第3节 React 创建组件、绑定属性( 绑定class 绑定

第3节 React 创建组件、绑定属性( 绑定class 绑定

作者: 小沙坨 | 来源:发表于2019-05-11 22:52 被阅读0次

    1、创建组件

    1.1注意事项

    (1)所有的模板要被一个根节点包含起来;
    (2)模板元素不要加引号;
    (3)组件名称首字母大写、组件类名称首字母大写;
    (4)组件的构造函数中一定要注意 super
    子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。

    constructor(props){
            super(props);  /*用于父子组件传值  固定写法*/
            this.state={
                userinfo:'张三'
            }
    }
    

    1.2定义组件

    import React from 'react';
    class 组件名称 extends React.Component{
        //子类必须在constructor方法中调用supper方法,否则会在新建实例时会报错,这是因为子类没有自己的this对象,而是继承父类的this对象。
        constructor(props){
            super(props);
            this.state={
               msg:'Hello Word!'
            }
        }
    
        render(){
            return (
                <div>
                    <div>{this.state.msg}</div>
                </div>
            )
        }
    
    }
    export default 组件名称;
    

    2、绑定数据

    通过{}绑定数据

    (1)在构造函数中定义数据

    this.state={
        msg:'Hello Word!'
    }
    

    (2)在模板中获取绑定数据

     {this.state.msg}
    

    3、绑定属性

    (1)class 要变成 className
    (2)for 要变成 htmlFor
    (3)style属性和以前的写法有些不一样

    <div style={{'color':this.state.color}}>{this.state.title}</div>
    

    4、引入图片

    4.1通过import的方式引入图片

    (1)引入图片

    import imgUrl from '../assets/images/03.jpg'; 
    

    (2)模板中调用

    <img src={imgUrl} />
    

    4.2通过ES6语法require

    <img src={require("../assets/images/03.jpg")} />
    

    5、循环数组并渲染数据

    (1)构造函数中定义数据

    //构造函数
    constructor(props){
        super(props);
        this.state={
            list1:['学习React.js','学习Vue.js','学习SpringBoot'],
            list2:[<li key='1'>学习SpringMVC</li>,<li key='2'>学习SpringCloud</li>,<li key='3'>学习SpringBoot</li>],
            list3:[
                {title:'时政新闻'},
                {title:'娱乐新闻'},
               {title:'军事新闻'}
            ]
        }
    }
    

    (2)模板中调用数据

    render(){
        let lNews=this.state.list1.map(function (values,index){
             return <li key={index}>{values}</li>
        })
        return(
            <div>
                 {/* 第一种方式,通过定义变量的方式*/}
                 <ul>
                    {lNews}
                </ul>
                <br/>
                {/* 第二种方式:数组中有标签元素,直接通过this.state调用*/}
                <ul>
                    {this.state.list2}
                </ul>
                <br/>
                {/* 第三种方式:调用对象的方式*/}
                <ul>
                    {
                        this.state.list3.map(function (value,index) {
                             return(<li key={index}>{value.title}</li>)
                        })
                    }
                </ul>
            </div>
        )
    }
    

    6、完整DEMO示例

    6.1绑定数据、绑定属性

     import React from 'react';
    import '../assets/css/index.css';
    
    /*
    * 绑定属性要注意
    *   (1)class换成className
    *   (2)for要换成htmlFor
    *    (3) style属性和以前的写法有些不一样
              <div style={{'color':'blue'}}>{this.state.title}</div>
            <div style={{'color':this.state.color}}>{this.state.title}</div>
    * */
    class Lesson03 extends React.Component{
    
        //子类必须在constructor方法中调用supper方法,否则会在新建实例时会报错,这是因为子类没有自己的this对象,而是继承父类的this对象。
        constructor(props){
            super(props);
            this.state={
               msg:'Hello Word!',
               title:'我是一个title',
               color:'divred',//定义样式
               style:{
                   color:'red',
                   fontSize:'18px'
                }
            }
        }
    
        render(){
            return (
                <div>
                    <div>{this.state.msg}</div>
                    <div title={this.state.title}>我是一个DIV</div>
                    <div className="divred">我是一个红色的DIV</div>
                    <div className={this.state.color}>我是一个红色的DIV2</div>
                    <div style={{color:'red'}}>行内样式1</div>
                    <div style={this.state.style}>行内样式2</div>
                </div>
            )
        }
    
    }
    export default Lesson03;//导出组件
    

    6.2绑定图片、循环数组

    import React from 'react';
    import imgUrl from '../assets/images/03.jpg';
    import "../assets/css/index.css";
    //定义组件
    class News extends  React.Component{
        //构造函数
        constructor(props){
            super(props);
            this.state={
                msg:'你好世界,我是一个新闻组件',
                imgAlt:"这是一个图片",
                list:['学习React.js','学习Vue.js','学习SpringBoot'],
                list2:[<li key='1'>学习SpringMVC</li>,<li key='2'>学习SpringCloud</li>,<li key='3'>学习SpringBoot</li>],
                list3:[
                    {title:'时政新闻'},
                    {title:'娱乐新闻'},
                    {title:'军事新闻'}
                ]
            }
        }
    
        render(){
            let lNews=this.state.list.map(function (values,index){
                 return <li key={index}>{values}</li>
            })
            return(
                <div>
                    <div>{this.state.msg}</div>
    
                    {/* 第一种方式:通过import的方式引入*/}
                    <img src={imgUrl} title={this.state.imgAlt} style={{'width':'500px'}}/>
    
                    {/* 第二种方式:通过ES6的语法方式进行图片的引入 require */}
                    <img src={require("../assets/images/03.jpg")} title={this.state.imgAlt} style={{'width':'500px'}}/>
                    <br/>
                        <ul>
                            {lNews}
                        </ul>
                    <br/>
                    <ul>
                        {this.state.list2}
                    </ul>
                    <br/>
                    <ul>
                        {
                            this.state.list3.map(function (value,index) {
                                 return(<li key={index}>{value.title}</li>)
                            })
                        }
                    </ul>
                </div>
            )
    
        }
    }
    export default  News; //导出组件
    

    相关文章

      网友评论

        本文标题:第3节 React 创建组件、绑定属性( 绑定class 绑定

        本文链接:https://www.haomeiwen.com/subject/qdafaqtx.html