react基础学习小demo汇总
2017-06-23 11:57
459 查看
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>react demo</title> <script src="./build/react.js" charset="utf-8"></script> <script src="./build/react-dom.js" charset="utf-8"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.24/browser.min.js" charset="utf-8"></script> <style> .pstyle{ font-size:20px; } </style> </head> <body> <div id="container"> </div> </body> <script type="text/babel"> /*-----------------------------------------------------------------------------*/ /*传递props,父组件传递给子组件*/ var HelloMessage = React.createClass({ render: function(){ return <h1>{this.props.helloText}</h1>; } }); /*-----------------------------------------------------------------------------*/ /* react中设置样式的三种形式 1.行内样式,直接在标签中设置样式,style={{}},用逗号隔开,并且使用驼峰命名法,右边的属性会覆盖左边的属性 2.传入对象当做样式,用对象将样式包裹起来,style={} 3.传统的class设置样式,class写作className */ var hStyle = { titleStyle: { backgroundColor:"green", color:"red" } } var ShowMsg = React.createClass({ render: function(){ return( <div style={{backgroundColor:"yellow",border:"5px solid black"}}> <h1 style={hStyle.titleStyle}>{this.props.firstRow}</h1> <p className="pstyle">{this.props.secondRow}</p> </div> ) } }); /*-----------------------------------------------------------------------------*/ /*复合组件*/ var WebName = React.createClass({ render: function(){ return <h1>{this.props.webname}</h1> } }); var WebLink = React.createClass({ render: function(){ return <a href={this.props.weblink}>{this.props.weblink}</a> } }); var WebShow = React.createClass({ render: function(){ return( <div> //props中转站,原始值从ReactDOM.render传过来,再传给子组件 <WebName webname={this.props.wname}/> <WebLink weblink={this.props.wlink}/> </div> ) } }); /*-----------------------------------------------------------------------------*/ /*遍历子节点*/ /* ReactDOM.render( <ListComponent> <h1>hello</h1> <p>world</p> </ListComponent>, document.getElementById("container") ); 挂载时将会遍历出 <li><h1>hello</h1></li> <li><p>world</p></li> */ var ListComponent = React.createClass({ render: function(){ return( <ul> { React.Children.map(this.props.children, function(child){ return <li>{child}</li> }) } </ul> ) } }); /*-----------------------------------------------------------------------------*/ /*props验证类型*/ var ShowTitle = React.createClass({ propTypes:{ //title只能为字符串 title: React.PropTypes.string.isRequired }, render: function(){ return <h1>{this.props.title}</h1> } }) /*-----------------------------------------------------------------------------*/ /*给props设置默认值,在挂载时可以省略传递的参数,例如title="xxx"可以省略*/ var MyTitle = React.createClass({ //默认值设置 getDefaultProps:function(){ return { title: "百度" }; }, render: function(){ return <h1>{this.props.title}</h1> } }) /*-----------------------------------------------------------------------------*/ /*在react中绑定事件*/ var MyButton = React.createClass({ //任意命名事件函数 handleClick :function(){ alert("点击按钮触发的效果") }, render: function(){ return( <button onClick={this.handleClick}>{this.props.buttonTitle}</button> ) } }) /*----------------------------------------------------------------------------*/ /*state的两个小demo*/ /* demo1:根据复选框的选中状态,改变文字*/ var CheckButton = React.createClass({ getInitialState: function(){ // 设置默认状态,返回一个对象,在对象中设置的属性,将会存储在state当中 //版本更新后应该在constructor中设置 return { isCheck: false } }, handleChange: function(){ //修改状态值,通过this.state读取设置状态值 this.setState({ isCheck: !this.state.isCheck }) }, render: function(){ //根据状态值,重新渲染render //在JSX语法中,render中不能直接使用if var text = this.state.isCheck ? "已选中" :"未选中"; return ( <div> <input type="checkbox" onChange={this.handleChange}/>{text} </div> ) } }) /*demo2:在文本框中输入值,同步显示在p标签中*/ var Input = React.createClass({ getInitialState: function() { return { value: "请输入" } }, handleChange: function(event){ this.setState({ //event.target.value获取用户输入的值 value:event.target.value }) }, render: function() { var value = this.state.value; return( <div> //在事件中改变状态 <input type="text" value={value} onChange={this.handleChange}/> <p>{value}</p> </div> ) } }) /*-----------------------------------------------------------------------------*/ /*挂载*/ ReactDOM.render( <Input/>, document.getElementById("container") ); </script> </html>
相关文章推荐
- 路由器基础知识点汇总学习
- 转@ 标准基础知识汇总〖新手学习必读〗-机电商情网
- java基础学习笔记汇总之面向对象
- javaScript学习基础知识汇总
- php基础语法学习汇总
- 路由器基础知识点汇总学习
- Android React-Native系列之<二>零基础学习React-Native控件之View
- Xpage学习问题汇总之基础篇-创建xpage
- Android 基础学习文章汇总
- React Native for Android 学习笔记(一) 操蛋的环境搭建与demo运行
- 【网络基础】TCP/IP 学习资料汇总
- Python学习笔记---基础汇总部分
- Python学习笔记---基础汇总部分
- [cocos2d-x学习笔记][入门基础]Box-2d物理引擎的使用02制作一个简易的愤怒小鸟Demo
- Python学习(三)——————基础知识汇总(一)
- 日语零基础学习 【汇总】日语学习网站
- js基础知识学习站点汇总
- SAP HANA学习资料中的基础表及数据SQL语句汇总
- mysql 学习基础知识汇总
- 数据分析基础学习大纲汇总