section-1

  1. //react组件
  2. export class Halo extends React.Component{
  3. constructor(...args){
  4. super(...args); //初始化父类构造函数
  5. this.state={ //设置state
  6. text:""
  7. }
  8. }
  9. hello(ev){
  10. this.setState({ //修改state
  11. text:ev.target.value
  12. })
  13. }
  14. render(){
  15. return(
  16. {/*只能一个父元素包裹*/}
  17. <div>
  18. {/*事件大小写注意 onChange onClick*/}
  19. <input type="text" onChange= {this.hello.bind(this)}/>
  20. <span>{this.state.text}</span>
  21. </div>
  22. )
  23. }
  24. }

section-2

  1. export class Halo extends React.Component{
  2. constructor(...args){
  3. super(...args);
  4. this.state={
  5. display:"block"
  6. }
  7. }
  8. toggle(){
  9. this.setState({
  10. display:this.state.display==="none" ? "block":"none"
  11. })
  12. }
  13. render(){
  14. return(
  15. <div>
  16. <input type="button" value="切换" onClick={this.toggle.bind(this)}/>
  17. {/*class在JSX中需要改成className*/}
  18. {/*行内样式需要加两个花括号*/}
  19. <span className="content" style={{display:this.state.display}}>内容的显示和隐藏</span>
  20. </div>
  21. )
  22. }
  23. }

section-3

  1. export class Halo extends React.Component{
  2. constructor(...args){
  3. super(...args);
  4. this.state={
  5. h:0,
  6. m:0,
  7. s:0
  8. };
  9. setInterval(function(){
  10. this.update();
  11. }.bind(this),1000)
  12. }
  13. update(){
  14. let date=new Date();
  15. this.setState({
  16. h:date.getHours(),
  17. m:date.getMinutes(),
  18. s:date.getSeconds()
  19. })
  20. }
  21. componentDidMount(){
  22. this.update();
  23. }
  24. render(){
  25. return(
  26. <div>
  27. {this.state.h}:{this.state.m}:{this.state.s}
  28. </div>
  29. )
  30. }
  31. }

section-4

  1. /*react 生命周期*/
  2. componentWillMount() 创建前
  3. componentDidMount() 创建后
  4. componentWillUpdate() 更新前
  5. componentDidUpdate() 更新后
  6. componentWillUnMount() 销毁前
  7. componentWillReceiveProps(nextProps){
  8. // ???
  9. }
  10. shouldComponentUpdate(){
  11. //返回boolean值 默认每次状态更改时重新渲染
  12. //返回false componentWillUpdate(),render()和componentDidUpdate()将不会被调用
  13. }

section-5

  1. //组件的另一种写法 无状态state组件
  2. //Es6 React.Component Es5 React.createClass 其他两种定义方式
  3. let Item=function(props){
  4. return <li>{props.value}</li>
  5. };
  6. export class Halo extends React.Component{
  7. constructor(...args){
  8. super();
  9. this.state={
  10. arr:[1,2,3,4,5]
  11. }
  12. }
  13. addItem(){
  14. this.setState({
  15. arr:this.state.arr.concat([Math.random()])
  16. })
  17. }
  18. render(){
  19. let result=[],arr=this.state.arr;
  20. for(var i=0;i<arr.length;i++){
  21. {/*需要给每个Item增加unique key唯一标识*/}
  22. result.push(<Item key={i} value={arr[i]} />)
  23. }
  24. return(
  25. <div>
  26. <input type="button" value="增加Item" onClick={this.addItem.bind(this)}/>
  27. <ul>
  28. {result}
  29. </ul>
  30. </div>
  31. )
  32. }
  33. }

React基础知识备忘的更多相关文章

  1. java基础知识备忘

    1.java内存分配 a.寄存器cup -- 暂不涉及 b.本地方法栈  -- 虚拟机调用windows功能用的,比如创建文件夹 c.方法区  -- 存放 .class文件,负责存放方法 d.栈 -- ...

  2. JVM内存知识备忘

    又是一篇备忘... 主要记录一些知识,进行一些资源的汇总. 先来群里liufor大大提供的两张图,清晰易懂: Dockerized Java https://www.youtube.com/watch ...

  3. GIS部分理论知识备忘随笔

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.高斯克吕格投影带换算 某坐标的经度为112度,其投影的6度带和3度带 ...

  4. React基础知识

    学习文档(按优先级排列)http://reactjs.cn/react/docs/tutorial-zh-CN.htmlhttp://www.cnblogs.com/Mrs-cc/p/4969755. ...

  5. React 基础知识总结

    data-id="1190000016885142" data-license=""> 一.Node.js Node.js并不是一个JavaScript框 ...

  6. React开发实时聊天招聘工具 -第三章 React基础知识回顾

    function a (props) { return <h1>hello world{this.props.asd}</h1> } class a extends React ...

  7. ASP.NET基础代码备忘

    使用ASP.NET原生的__doPostBack方法触发asp:Button //javaScript部分 __doPostBack('<%=btnAmountDivided.UniqueID ...

  8. xml 基础学习备忘

    <?xml version="1.0" encoding="UTF-8"? standalone="yes"> 这里的encod ...

  9. JavaScript中JSONObject和JSONArray相关知识备忘(网络转载)

    1.json的格式,有两种: {"key": "value"} //JSONObject(对象) [{"key1": "value ...

随机推荐

  1. Ubuntu 使用 Android Studio 编译 TensorFlow android demo

    https://www.cnblogs.com/dyufei/p/8028218.html https://www.myboxlab.com/topic/detail/714ca2d405414f13 ...

  2. [JSON]初识JSON

    1:什么是json json是,是储存和交换文本信息的语法,类似于xml,但是比xml更小,更快,更易解析.   2:JSON的语法规则 JSON中:数据在key/velue对中,数据由对号分隔,花括 ...

  3. [转载]tensorflow中使用tf.ConfigProto()配置Session运行参数&&GPU设备指定

    tf.ConfigProto()函数用在创建session的时候,用来对session进行参数配置: config = tf.ConfigProto(allow_soft_placement=True ...

  4. 使用grep排除空行和注释行

    grep的排除选项为 -v排除空行的命令是:grep -v '^$' filename排除以#注释的命令是:grep -v '^#' filename 结合起来就是,既排除空行又排除注释行的命令gre ...

  5. nodejs -Promise

    创建一个 readFile.js,读取三个文件abc的内容并输出到控制台 var fs = require('fs') fs.readFile('./a.txt','utf-8',function ( ...

  6. SSIS服务无法登录的解决方案

    现象1:登录SSIS报权限认证失败. 授予对 Integration Services 服务的访问权限 运行 Dcomcnfg.exe. Dcomcnfg.exe 提供用于修改注册表中的某些设置的用户 ...

  7. matlab处理手写识别问题

    初学神经网络算法--梯度下降.反向传播.优化(交叉熵代价函数.L2规范化) 柔性最大值(softmax)还未领会其要义,之后再说 有点懒,暂时不想把算法重新总结,先贴一个之前做过的反向传播的总结ppt ...

  8. 节流(Throttling)和去抖(Debouncing)详解

    这篇文章的作者是 David Corbacho,伦敦的一名前端开发工程师.之前我们有一篇关于”节流”和”去抖”的文章:The Difference Between Throttling and Deb ...

  9. 用css解决table文字溢出控制td显示字数

    场景: 最左边这栏我不行让他换行,怎么办呢? 下面是解决办法: table{ width:100px; table-layout:fixed;/* 只有定义了表格的布局算法为fixed,下面td的定义 ...

  10. Mysql 5.* 数据库备份及导入

    作者:邓聪聪 倒出数据文件 1) 导出数据和表结构: 进入数据库查看表结构 msql -u用户名 -p密码 msql -u用户名 -p密码 -S /var/lib/mysql/mysql.sock  ...