面向对象应用——React
特点:
    1、组件化(模块化) --- class(一个组件就是一个class)
    2、强依赖与JSX (JSX==babel==browser.js  是JS的扩展版)
    3、三个库:
        1)react.js ----> React 的核心库
        2)react-dom.js ----> 提供与 DOM 相关的功能
        3)babel.min.js ----> Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执行 React 代码。Babel 内嵌了对 JSX 的支持。通过将 Babel 和 babel-sublime 包(package)一同使用可以让源码的语法渲染上升到一个全新的水平
        4)如果我们需要使用 JSX,则 <script> 标签的 type 属性需要设置为 text/babel。
如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdn.staticfile.org/react/16.4.0/umd/react.development.js"></script>
<script src="https://cdn.staticfile.org/react-dom/16.4.0/umd/react-dom.development.js"></script>
<script src="https://cdn.staticfile.org/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel">
// ...
</script>
</head>
<body>
<!-- ... -->
</body>
</html>
 
1、React最基础的东西
window.onload = function (){
let oDiv = document.getElementById('div1');
ReactDOM.render( //JSX
<span>124</span>,
oDiv
);
};
2、React组件
 
1)组件渲染1
class Test extends React.Component{
constructor(...args) {
super(...args);
}
render(){
return <span>span123</span>;
}
}
window.onload = function (){
let oDiv = document.getElementById('div1');
//JSX
ReactDOM.render(
<Test></Test>,
oDiv
);
};

2)组件渲染2 —— {表达式}

class Item extends React.Component{
constructor(...args) {
super(...args);
}
render(){
return <li>{this.props.str}</li>;
// 在 JSX 当中你可以插入 JavaScript 的表达式,表达式返回的结果会相应地渲染到页面上。表达式用 {} 包裹。
}
}
window.onload = function (){
let oDiv = document.getElementById('div1');
//JSX
ReactDOM.render(
<ul>
<Item str='111'></Item>
<Item str='111'></Item>
<Item str='111'></Item>
</ul>,
oDiv);
};

3)组件渲染3 —— 组件套组件

class Item extends React.Component{
constructor(...args) {
super(...args);
}
render(){
return <li>{this.props.str}</li>;
}
}
class List extends React.Component{
constructor(...args){
super(...args);
}
render(){
return <ul>
<Item str='111'></Item>
<Item str='111'></Item>
</ul>;
}
} window.onload = function (){
let oDiv = document.getElementById('div1');
//JSX
ReactDOM.render(
<List></List>,
oDiv);
};

4)组件渲染4 —— React传参

class Item extends React.Component{
constructor(...args) {
super(...args);
}
render(){
return <li>{this.props.str}</li>;
}
}
class List extends React.Component{
constructor(...args){
super(...args);
}
render(){
alert(this.props.arr[0]);
return <ul>
<Item str='111'></Item>
<Item str='111'></Item>
</ul>;
}
}
window.onload = function (){
let oDiv = document.getElementById('div1');
//JSX
ReactDOM.render(
// <List arr="['bbb','ppp','ddd']"></List> // 输出:[
<List arr={['bbb','ppp','ddd']}></List>, // 输出:bbb
oDiv
);
};

注意:

React 有两种传参方式 分别是字符串和表达式 其中 只有表达式才可以输出字符串以外的东西,比如,数组...

5)组件渲染4 —— React传参3(映射)

class Item extends React.Component{
constructor(...args) {
super(...args);
}
render(){
return <li>{this.props.str}</li>;
}
}
class List extends React.Component{
constructor(...args){
super(...args);
}
// 还是报错了!
render(){ let aItems = this.props.arr.map(a=><Item str={a}></Item>);
return <ul>
{aItems}
</ul>;
// return <ul>
// {this.props.arr.map(a=><Item str={a}></Item>)}
// </ul>;
}
}
window.onload = function (){
let oDiv = document.getElementById('div1');
//JSX
ReactDOM.render(
<List arr={['bbb','ppp','ddd','fas']}></List>,
oDiv);
};

ES6——面向对象应用的更多相关文章

  1. ES6面向对象 动态添加标签页

    HTML <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml&quo ...

  2. JS - ES5与ES6面向对象编程

    1.面向对象 1.1 两大编程思想 1.2 面向过程编程 POP(Process-oriented programming) 1.3 面向对象编程 OOP (Object Oriented Progr ...

  3. ES6 面向对象笔记

    JS面向对象两大编程思想 面向过程 面向对象 面向过程编程POP         面向过程就是分析出问题的需要步骤,然后用函数一步一步的实现,使用的时候一个一个调用就可以了 面向对象编程OOP     ...

  4. ES6面向对象实现tab栏切换效果

    面向对象实现tab栏切换效果

  5. ES6——面向对象-基础

    面向对象原来写法 类和构造函数一样 属性和方法分开写的 // 老版本 function User(name, pass) { this.name = name this.pass = pass } U ...

  6. es6面向对象

    <script> class user{ constructor(name,age){ this.name=name; this.age=age; } showName(){ alert( ...

  7. es6 面向对象选项卡(自动轮播功能)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 粗看ES6之面向对象写法

    标签: es6 在es6以前,js没有类的概念,虽然有构造函数原型的方式用来做面向对向开发,但是对于书法并不是十分友好,而且对于继承实现也不是十分友好. es6引入class constructor ...

  9. ES6新增语法(四)——面向对象

    ES6中json的2个变化 简写:名字和值相同时,json可以可以简写 let a=12,b=5; let json = { a, b } console.log(json) // { a:12 , ...

随机推荐

  1. 解决Intellij IDEA中项目不能识别yml配置文件

    问题:能读取资源路径下的properties配置文件但是不能读yml配置文件 因为无法读取配置yml配置文件,所以不能配置bean,导致项目启动报错. 解决方法: 在VM options中设置虚拟机加 ...

  2. php end()函数 语法

    php end()函数 语法 作用:将数组内部指针指向最后一个元素,并返回该元素的值(如果成功).博智达 语法:end(array) 参数: 参数 描述 array 必需.规定要使用的数组. 说明:如 ...

  3. 洛谷p3955 图书管理员(NOIP2017 t2)

    蒟蒻的最后一篇pas题解...目前转c++ ing 回顾了一下,发现c++的string真的好繁啊(主要我这个蒟蒻太菜不会用) 还是pas的string操作简洁 做法 我这种蒟蒻不像别的dalao,懒 ...

  4. 【bzoj2733】[HNOI2012]永无乡

    题目描述: 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到 ...

  5. OpenCV Sift源码分析

    /*M/////////////////////////////////////////////////////////////////////////////////////////// IMPOR ...

  6. Educational Codeforces Round 16 E. Generate a String (DP)

    Generate a String 题目链接: http://codeforces.com/contest/710/problem/E Description zscoder wants to gen ...

  7. npm install 成功安装依赖后,运行跑不起来怎么办?

    最近接手公司的项目,由于代码历史悠久,据说已经最少经历过了6个人的手,查看gitee提交的年限,竟然是1-2年前的代码,好吧.这个锅总得有人接,既然是架构师,就要勇于面对挑战,今天把我解决的方法记录起 ...

  8. 大数据笔记(十七)——Pig的安装及环境配置、数据模型

    一.Pig简介和Pig的安装配置 1.最早是由Yahoo开发,后来给了Apache 2.支持语言:PigLatin 类似SQL 3.翻译器 PigLatin ---> MapReduce(Spa ...

  9. G-sensor概述及常用概念整理【转】

    本文转载自:http://www.jianshu.com/p/d471958189a0?nomobile=yesG 本文对G-sensor进行整理,先介绍G-sensor的一些基本概念,再具体讲解BO ...

  10. 《图解 CSS3 核心技术与案例实战》

    第一章 解开 CSS3 的面纱 使用 CSS3 的好处 减少开发和维护成本:如传统实现圆角边框需要绘图.切图才能完成,而使用 css 可以直接完成 提高页面性能 渐进增强(Progressive En ...