第2节,React目录结构分析 、创建组件、 JSX语法、 绑定数据 绑定对象2019-05-04

1、目录结构

(1)yarn.lock:项目依赖安装包,一般不需要动;
(2)Read.me:项目说明文件;
(3)package.json:脚手架工具文件,node的包文件,脚手架自动生成,一般不需要动;
(4)node_modules文件夹:项目依赖的第三方包
(5)public文件夹
favicon.ico:地址栏图标;
index.html:项目首页模板;
manifest.json:允许将站点添加至主屏幕,是 PWA 提供的一项重要功能,当前 manifest.json 的标准仍属于草案阶段,Chrome 和 Firefox 已经实现了这个功能,微软正努力在 Edge 浏览器上实现,Apple 目前仍在考虑中;
(6)src文件夹
index.js:入口文件
index.html:项目首页模板
index.css:项目的公共css文件

2、创建组件

需要注意,组件的名称首字母需要大写,

2.1第一种写法:


class 组件名称 extends React.Component{
  render(){
     return(
             <div>Hello Word</div>//最外层必须有一个标签元素
         )
  }
}

export default 组件名称;//导出组件

2.2第二种写法:

import React,{Component} from "react";

class 组件名称 extends Component{
  render(){
     return(
             <div>Hello Word</div>
         )
  }
}

3、JSX语法

3.1构造函数

super继承Component父类;
props为固定参数,用于父子组件数据的传递;

3.2注释

{/*多行注释*/}

{
  //单行注释
}

3.3jsx的语法

jsx语法基本上是html的标签,需要注意相关关键词需要改成react的写法,如class需要改成className,for改成htmlFor;

4、绑定数据

(1)通过state进行赋值,可以是单一属性值或者是对象值;

    super(props);
    this.state={
        name:'张三',
        userinfo:{
            age:20
        }
    }
}

(2)在return返回值中调用

<p>姓名:this.state.name;</p>
<p>对象:this.state.userinfo.username</p>

完整示例如下:

import React, { Component } from 'react';
class Home extends Component{
    constructor(){
        super();
        //react定义数据
        this.state={
            name:"张三",
            age:'30',
            userinfo:{
                username:"itying"
            }
        }
    }

    render(){
        return (
            <div>
                <h2>react组件里面的所有节点要被根节点包含</h2>
                <p>姓名:{this.state.name}</p>
                <p>年龄:{this.state.age}</p>
                <p>对象:{this.state.userinfo.username}</p>
            </div>
        )

    }
}

export default Home;

5、总结说明

5.1 supper说明

Es6中的super可以用在类的继承中,super关键字,它指代父类的实例(即父类的this对象)。子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。

    class Person {
        constructor (name) {
            this.name = name;
        }
    }

    class Student extends Person {
        constructor (name, age) {
                super(); // 用在构造函数中,必须在使用this之前调用
                this.age = age;
         }
    }

5.2为什么官方的列子里面写个super(props):

只有一个理由需要传递props作为super()的参数,那就是你需要在构造函数内使用this.props。那官方提供学习的例子中都是写成super(props),所以说写成super(props)是完全没问题的,也建议就直接这样写。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342