React的学习之旅1

  • 单标签要有斜杠代表结束
  • 用React.createClass()方法时,赋值后的组件名称首字母一定要大写
  • 一定要先定义组件,再用ReactDOM.render调用
  • 组件里render对应的函数的返回值,如果有多个html标签,外面一定要再多包一层,外面可以用小括号包起来
var FirstComponent = React.createClass({ //FirstComponent首字母大写
render:function(){
return <img src="./image/1.png"/>
}
});
//定义组件(组件名首字母必须大写)
//React对象调用createClass方法,把一个对象传进去,对象有个键是render,对应是个函数,有个返回值
var FirstComponent = React.createClass({
render:function(){
return <img src="./image/1.png"/>
}
}); //这里将封装好的FirstComponent,用ReactDOM的render方法添加到指定的DOM中
ReactDOM.render(
<FirstComponent />,
document.getElementById('wrap')
);
ReactDOM.render(
<FirstComponent />,
document.getElementById('div1')
);
var FirstComponent = React.createClass({
render:function(){
return ( //这里有2个标签,外面必须再包一层,另外可以用小括号包一下
<div>
<img src="./image/1.png"/>
<h2>欢迎学习React</h2>
</div>
)
}
});
  • 利用creatClass定义的属性,可以在html中传入不同的值,然后用{this.props[属性名]}的方式来定义这个值是可以在外面定义的,然后在后面的ReactDOM.render方法中调用时,在每个对应的html标签中传入。方法有两种,一种是直接赋值,一种是把所有属性名和属性值放进一个对象中。
  • {...[对象名称]}比如{...obj}是一种语法糖,意思将obj中的键值对全部按照标签的属性名和属性值的方式添加到html标签中
  • 要注意的是,在createClass时,里面标签对应的值用了{}表示,这个在标签中用{}的做法,babel会自动解析成js代码
var FirstComponent = React.createClass({
render:function(){
return (
<div>
<h2>{this.props.title}</h2>
<input type="text" />
<input type="button" value={this.props.btnValue}/> //注意这里的要用到this.props.btnValue,btnValue要对应好传入对象中的键,而this.props相当于谁调用渲染了这个组件,就传入该标签中属性的属性对象(属性键值对)
</div>
)
}
}); var obj = {
title: 'Welcome to study React!!!',
btnValue: 'Confirm!'
};
var obj2 = {
title: '欢迎学习react!!!',
btnValue: '确认!'
}; ReactDOM.render(
//<FirstComponent title={obj.title} btnValue = {obj.confirm} />,
<FirstComponent {...obj} />,//这里用了语法糖,把obj中的键值对title和btnValue以及它们对应的值赋给FirstComponent标签中
document.getElementById('wrap')
);
ReactDOM.render(
<FirstComponent {...obj2}/>,//第二个组件标签渲染时用的是obj2中的属性名和属性值
document.getElementById('div1')
);
  • 如果要直接给组件中的html标签添加class,不能直接在标签里写class,而应该要用className,因为这里是会被解析成js代码
var Hello = React.createClass({  //这里是className,而不是class
render:function (){
return (<h2 className="active">Hello {this.props.title}.{this.props.name}</h2>)
}
});
  • 如果要在组件里的html标签中直接写入行间样式,不能使用字符串的形式,而是可以用json的形式,但是如果不用json存成变量,那就要写{{}}的形式,外面一层{}相当于解析js代码,里面一层才是json的那个大括号
  • 行间样式如果涉及到复合样式,也要用驼峰的方式,而不是css里用-连接了,时刻记住这里是js解析,另外属性值仍然要用''包起来
var Hello = React.createClass({
render:function (){ //这里fontSize,而不是font-size,用了2个大括号宝珠
return (<h2 style={{color:'deeppink',fontSize:'30px'}}>Hello{this.props.name}</h2>)
}
});

【学】React的学习之旅1的更多相关文章

  1. 【学】React的学习之旅7-官方例子总结

    如果在标签里有注释,除了使用/**/之外,如果写在子标签中,外面还需要用{}包起来,指明这段是javascript代码,否则这段注释会直接显示在页面上,例如 render:function (){ r ...

  2. 【学】React的学习之旅5-组件的嵌套

    复习 [array].map(function(item,index){})方法,传参里的函数需要有return值,一般用map()后都要用一个变量接一下,这个返回的还是一个数组,只是把每次遍历到的数 ...

  3. 【学】React的学习之旅4-添加事件(onChange)

    实现联动绑定,在文本框中输入内容的同时,后面的span里内容跟着一起变化: onChange(),一旦触发一次变动,就执行某个函数: 既然已经在getInitialState属性里申明了一个变量inp ...

  4. 【学】React的学习之旅3 - 添加事件(onClick)

    button除了用<input type="button">之外,还可以直接用<button></button>来创建,而2个标签的中间的内容就 ...

  5. 【学】React的学习之旅2 - React Component的生命周期

    分成三个状态: Mounted Update Unmounted Mounted:当我们看到组件在浏览器中从无到有的效果的时候,mounted已经结束了,这个组件已经被mounted了 有这个阶段有2 ...

  6. 【学】React的学习之旅6-组件的嵌套2

    <input type=text placeholder='aaa'>, placeholder属性是定义文本框在没有输入值之前显示的一段灰色提示 ()=>{}箭头函数在ECMA6里 ...

  7. WCF学习之旅—TCP双工模式(二十一)

    WCF学习之旅—请求与答复模式和单向模式(十九) WCF学习之旅—HTTP双工模式(二十) 五.TCP双工模式 上一篇文章中我们学习了HTTP的双工模式,我们今天就学习一下TCP的双工模式. 在一个基 ...

  8. 180分钟的python学习之旅

    最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

  9. react native 学习一(环境搭配和常见错误的解决)

    react native 学习一(环境搭配) 首页,按照http://reactnative.cn/docs/0.30/getting-started.html#content上的介绍,下载安装pyt ...

随机推荐

  1. strlen 字符型数组和字符数组 sizeof和strlen的区别 cin.get(input,Arsize)

    strlenstrlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值 ...

  2. Microsoft Visual C++

    Microsoft Visual C++ Visual C++ 1.0 1992 Visual C++ 1.5 Visual C++ 2.0 (备注) Visual C++ 4.0 Visual C+ ...

  3. struts2 配置拦截器

    第一步:继承MethodFilterInterceptor写自己的自定义拦截器 import org.apache.struts2.ServletActionContext; import com.o ...

  4. Ansible-Tower快速入门-6.查看tower的仪表板【翻译】

    查看tower的仪表板 到这一步,我们已经可以在屏幕上看到tower的仪表板了,我们可以看到你目前"主机""资产清单"和"项目"的汇总信息, ...

  5. Centos6.5 gitlab安装使用

    公司从svn转到git做版本管理,我搜了一下网上git的服务器,包括gitosis,gitolite等.一开始我是用的是gitosis作为git服务器的,安装过程还算比较简单,整个服务使用python ...

  6. ubuntu随笔

    在命令行里输入 sudo nautilus 之后输入你的用户的密码,会弹出一个目录窗口来,可以复制到这来

  7. 遍历 Input检测是否有重复的值

    在项目中需要遍历某个Table中的Input输入是否有重复的值,为此基于Jquery写了两种实现方式(关键在于取值方式): 方法1: function CheckGoodsNo() { var ish ...

  8. C#编程语言与面向对象——抽象基类与接口

    在一个类前加“abstract”关键字,此类就成为抽象类. 对应的,在一个方法前加“abstract”关键字,此方法就成为抽象方法. abstract class Fruit //抽象类 { publ ...

  9. iOS截屏

    - (UIImage *)captureImageFromView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size); CGC ...

  10. AOP 手动,半自动,全自动

    dao层 package com.yaorange.dao; public interface StudentDao { public void saveStudent(); public void ...