react基础小结

1. 例子

import React from 'react'
import { render } from 'react-dom' // 定义组件
class Hello extends React.Component {
render() {
// return 里面写jsx语法
return ( <p>hello world</p> )
}
} // 渲染组件到页面
render( <Hello/>, document.getElementById('root') )
import React from 'react'
这里的react对应的是./package.json文件中dependencies中的'react',即在该目录下用npm install安装的 react 。npm 安装的 react 的物理文件是存放在 ./node_modules/react中的,因此引用的东西肯定就在这个文件夹里面。 ./node_modules/react/package.json中的"main": "react.js",,这里的main即指定了入口文件,即./node_modules/react/react.js这个文件 2. jsx语法
1)使用一个父节点包裹
jsx中不能一次性返回零散的多个节点,如果有多个则包含到一个节点中
如:
return (
<div>
<p>段落1</p>
<p>段落2</p>
<p>段落3</p>
</div>
)
3. 注释
jsx中用{/**/}的注释形式
如:
return(
//jsx外的注释
<div>
{/*jsx里面的注释*/}
<p>hello</p>
</div>
)

4. 样式

css样式:

<p className="class1">hello</p>
<!--用className代替class*/
内联样式:
<p style={{color:'red',fontSize:'20px'}}>hello</p>
<!--注意{{}},和驼峰写法-->

5. 事件

如:click

class Hello extends React.Component{
render(){
return (
<p onClick={this.clickHandler.bind(this)}>hello</p>
)
} clickHandler(event){
console.log('yes')
}
}

注意:onClick驼峰写法

6. 循环

7. 判断

jsx中一般会用到三元表达式(表达式也是放在{}中的)

如:

return(
<div>
<p>段落1</p>
{
true
? <p> true </p>
: <p> false </p>
</div>
}
</div>
)

也可以这样使用:

<p style={{display: true? 'block' ? 'none'}}> hello world</p>

8. 数据传递&数据变化

1) props

如果

<Header title="Hello页面"/>

在Header组件中可以这样取到

render(){
return(
<p>{this.props.title}</p>
)
}

在react中,父组件给子组件传递数据时,就是以上的方式,通过给子组件设置props,子组件获取props中的值便可完成数据传递。

2)props&state

如果组件内部自身的属性发生变化

class Hello extends React.Component{
constructor(props,context){
super(props,context);
this.state={
//显示当前时间
now:Date.now()
}
}
render(){
return(
<div>
<p>hello world {this.state.now}</p>
</div>
)
}
}

react会实时监听每个组件的props和state值,一旦有变化,会立刻更新组件,将结果重新渲染到页面上

var LikeButton = React.createClass({
getInitialState: function (){
return {liked : false};
},
handleClick: function (event) {
this.setState({liked: !this.state.liked});
},
render: function(){
var text = this.state.liked ? 'like' : 'haven\'t liked';
return (
<p onClick={this.handleClick}>
you {text} this click to toggle
</p>
);
}
});
3)智能组件&木偶组件

 

最新文章

  1. Android 底部弹出Dialog(横向满屏)
  2. 汇编、c语言、c++的一些想法。
  3. jqGrid预定义的格式化类型formatter
  4. 对ASP.NET运行机制之 一般处理程序ashx的学习
  5. ExtJS4图片验证码的实现
  6. SpringMvc 相关,bean map转换,百度天气,base64.js,jsBase64.java;
  7. IOS9中出现的错误
  8. Dictionary 总结
  9. Oracle11g R2学习系列 之四Maven+Struts+Spring实验
  10. g711u与g729比較编码格式
  11. 大数据系列之Flume+HDFS
  12. Tomcat 部署安装及JVM调优~
  13. bzoj 2588 Count on a tree
  14. HTML 5 &lt;embed&gt; 标签
  15. servlet下载文件
  16. tomcat启动成功后访问却404
  17. appium:运行脚本时,报404的解决办法
  18. Jquery Ajax 调用后台并返回数据
  19. VMware workstation12 密匙
  20. 系统用户在Samba服务器中起一个别名

热门文章

  1. Spark算子--take、top、takeOrdered
  2. Windows7下远程操作虚拟机
  3. PHP flock() 函数
  4. Tomcat 源码分析(二)——Request处理全过程
  5. bug 对应
  6. ios 积累
  7. CSS深入理解学习笔记之relative
  8. SVN中服务器地址变更
  9. 带有 thead、tbody 以及 tfoot 元素的 HTML 表格
  10. mysql 出现Duplicate entry ‘xxx’ for key ‘PRIMARY’,一个自增字段达到了上限,