• 助你了解react的小demo


    React是个啥

              React 是一个用于构建用户界面的 JAVASCRIPT 库。

              React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。

              React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。

              React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。

    React 特点

            1.声明式设计 −React采用声明范式,可以轻松描述应用。

            2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。

            3.灵活 −React可以与已知的库或框架很好地配合。

            4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。

            5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。

            6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

    React demo

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>React-Template</title>
        <link rel="stylesheet" href="../css/main.css">
        <script src="../js/react.min.js"></script>
        <script src="../js/react-dom.min.js"></script>
        <script src="../js/browser.min.js"></script>
    </head>
    <body>
    	<div id="container"></div>
    <script type="text/babel">
        
        var Board = React.createClass({
        	
        	getInitialState :function(){
        		return ({
        			comments:["Hello Everybody","Hello Everybody","Welcome to Jredu","这是一个react小项目"]
        		});
        	},
        	updateComment: function(newText,i){
    //  		console.log(newText);
                var arr=this.state.comments;
                arr[i] = newText;
                this.setState({comments : arr});
        	},
        	removeComment: function(i){
                var arr = this.state.comments;
        		arr.splice(i,1);
        		this.setState({comments : arr});
        	},
        	add:function(text){
        		var arr = this.state.comments;
            	arr.push(text);
            	//更新我们的状态
                this.setState({comments : arr});
        	},
        	eachComment:function(text,i){
        		return(
    		   	   	<Comment deleteFromBoard={this.removeComment} updateCommentText={this.updateComment} key={i} index={i}>{text}</Comment>
        		);
        	},
        	
        	render : function(){
        		return (
        			<div>
        			    <button onClick={this.add.bind(null,"文本对象")} className="button-info create">Add New</button>
    	    			<div className = "board">
    	    			   {
    	    			      	this.state.comments.map(this.eachComment)
    	    			   }
    	    			</div>
        			</div>
        		);
        	}
        });
        
    	var Comment = React.createClass({
    		getInitialState : function(){
    			return ({
    				editing:false
    			});
    		},
    		edit: function(){
    //			alert("Editing comment");
                this.setState({editing:true});
    		},
    		save:function(){
    			var val = this.refs.newText.value;
    //			console.log("拿到的值"+val);
                this.props.updateCommentText(val,this.props.index);
    			this.setState({editing:false});
    		},
    		remove: function(){
    //			 alert("removing comment!");
                  this.props.deleteFromBoard(this.props.index);
    		},
    		
    		renderNoraml: function(){
    			return (
    				<div className="commentContainer">
    					<div>{this.props.children}</div>
    					<button onClick={this.edit} className="button-primary">edit</button>
    					<button onClick={this.remove} className="button-danger">remove</button>
    				</div>
    			);
    		},
    		renderForm: function(){
    			return (
    				<div className="commentContainer">
    					<textarea ref="newText" defaultValue={this.props.children}></textarea>
    					<button onClick={this.save} className="button-success">save</button>
    				</div>
    			);
    		},
    		render:function(){
    			
    			if (this.state.editing) {
    				return this.renderForm();
    			} else{
    				return this.renderNoraml();
    			}
    		}
    	});
    	
    	ReactDOM.render(
    		<Board />,
    		document.getElementById('container')
    	);
    </script>
    </body>
    </html>
    )
    

     显示效果

  • 相关阅读:
    [转]easyui data-options的使用
    HTML5新事物
    jQuery checkbox相关
    mybatis insert前获取要插入的值
    mybatis获得刚刚插入的自增的值
    MySQL 获得当前日期时间(以及时间的转换)
    Linux dirname $0 source if
    CCS
    Linux compress & uncompress
    Programming In Scala Reading Note 8
  • 原文地址:https://www.cnblogs.com/liuqiang1109/p/7788381.html
Copyright © 2020-2023  润新知