不会的要多查多问,不然不会的永远不会,哪怕你离会就差了那么一点点
						
					
		
 React - ES6 - Ajax获取接口数据渲染到UI组件【完整示例】
		
		
		[
 2016/09/24 01:22 | by 刘新修 ]
		
	
 2016/09/24 01:22 | by 刘新修 ]
		本站PHP后端接口: http://code.liuxinxiu.com/php/Interface/Jsoncallback.php?GUID=1&&Jsoncallback=1
本实例用 ES5 + JSX 语法编写[对应实例] : http://liuxinxiu.com/React_Ajax_setState_Render_UI_ES5/
JavaScript代码
- /****** ES6输入文件[调用模块依赖] ******/
 - import React, { Component, PropTypes } from 'react'
 - import $ from 'n-zepto'
 - /****** ES5输入文件[调用模块依赖] ******/
 - //var React=require('react');
 - //var $=require('n-zepto');
 - //import * as from './commentList.js'
 - //import list from './commentList.js';
 - /****** 本地模拟Array数据******/
 - var movies = [
 - {
 - id: 1,
 - name: '速度与激情001',
 - date: 2011
 - },
 - {
 - id: 2,
 - name: '速度与激情002',
 - date: 2009
 - }
 - ];
 - /****** 外部子组件map数组当做模板之用 ES5 + JSX 语法编写 ******/
 - var MoviesList = React.createClass({
 - render: function () {
 - // this.props 用于从组件外部传入数据
 - var _movies = this.props._movies;
 - return (
 - <li className="datali">
 - {_movies.id}-{_movies.name}
 - </li>
 - )
 - }
 - });
 - /****** 外部子组件map数组当做模板之用 ES6 + JSX 语法编写 ******/
 - let CommentList=class CommentList extends Component {
 - constructor(props) {
 - super(props); //ES6调用父类构造函数super不能少!
 - this.state = {
 - wording: '你好呀, '
 - };
 - }
 - /****** Ajax子组件中[主体模板] ******/
 - render(){
 - return <ul>{this.props.comments.map(this.renderComment)}</ul>;
 - }
 - /****** Ajax子组件中[嵌套模板] ******/
 - renderComment({plat,type,name,guid,cre_time,lottery}){
 - return (
 - <li>{plat}--{type}--{name}--{guid}--{cre_time}--{lottery}</li>
 - )
 - }
 - }
 - /****** 使用ES6 + JSX 语法编写 class xx extends React.Component{} 创建一个组件 ******/
 - class CommentListContainer extends Component {
 - /****** [ES6-constructor||ES5-getInitialState] ******/
 - constructor(){
 - super();
 - this.state = {
 - loading: true,
 - title: '我喜欢的电影',
 - movies: [],
 - comments: []
 - }
 - }
 - componentDidMount(){
 - $.ajax({
 - type: 'GET',
 - url: 'http://code.liuxinxiu.com/php/Interface/Jsoncallback.php',
 - data: {GUID:'1'},
 - dataType:'jsonp', //告诉Ajax调用$jsonp
 - jsonp: "Jsoncallback", //zpeto-1.2支持自定义回调名
 - success: function(data){
 - var yy=JSON.stringify(data);
 - var tlist=JSON.stringify(data.enttityList);
 - //console.log(tlist);
 - //console.log(this.state.title+'22');
 - this.setState({
 - comments:data.enttityList,
 - lottery:data.enttityList[0].lottery
 - });
 - var commentsStr=JSON.stringify(this.state.comments);
 - console.log("\n--->>commentsStr:\n"+commentsStr); //查看获取的数据
 - //console.log(this.state.comments+'33')
 - }.bind(this),
 - error: function(xhr, type){
 - alert(xhr+type+'Ajax error!');
 - }
 - });
 - //console.log(this.state.comments+'++++--!!'); //ajax底下拿不到结果因为提前于异步
 - }
 - render(){
 - return <CommentList comments={this.state.comments}/>;
 - }
 - }
 - /****** ES5输出给router ******/
 - //module.exports=DemoComponent;
 - /****** ES6输出给router ******/
 - export default CommentListContainer;
 
		
 React - ES5 - Ajax获取接口数据渲染到UI组件【完整示例】
		
		
		[
 2016/09/23 21:11 | by 刘新修 ]
		
	
 2016/09/23 21:11 | by 刘新修 ]
		本站PHP后端接口: http://code.liuxinxiu.com/php/Interface/Jsoncallback.php?GUID=1&&Jsoncallback=1
本实例用 ES6 + JSX 语法编写[对应实例] : http://liuxinxiu.com/React_Ajax_setState_Render_UI_ES6/
JavaScript代码
- //import React, { Component, PropTypes } from 'react'
 - //import $ from 'n-zepto'
 - var React=require('react'); //Es-5
 - var $=require('n-zepto'); //Es-5
 - //import * as from './commentList.js'
 - //import list from './commentList.js';
 - /****** 外部子组件map数组当做模板之用 ******/
 - var MoviesList = React.createClass({
 - render: function () {
 - // this.props 用于从组件外部传入数据
 - ar _movies = this.props._movies;
 - return (
 - <li className="datali">
 - {_movies.id}-{_movies.name}
 - </li>
 - )
 - }
 - });
 - /****** 本地模拟Array数据******/
 - var movies = [
 - {
 - id: 1,
 - name: '速度与激情001',
 - date: 2011
 - },
 - {
 - id: 2,
 - name: '速度与激情002',
 - date: 2009
 - }
 - ];
 - /****** 使用Es5语法 React.createClass 创建一个组件 ******/
 - var DemoComponent = React.createClass({
 - /****** 使用 getInitialState 的返回值作为数据的默认值 ******/
 - getInitialState: function () {
 - // this.state 用于存储数据comments被Ajax赋值要先定义个名称
 - return {
 - loading: true,
 - title: '我喜欢的电影',
 - movies: [],
 - comments: []
 - }
 - },
 - componentDidMount: function() {
 - $.ajax({
 - type: 'GET',
 - url: 'http://code.liuxinxiu.com/php/Interface/Jsoncallback.php',
 - data: {GUID:'1'},
 - dataType:'jsonp', //告诉Ajax调用$jsonp
 - jsonp: "Jsoncallback", //zpeto-1.2支持自定义回调名
 - success: function(data){
 - var yy=JSON.stringify(data);
 - var tlist=JSON.stringify(data.enttityList);
 - console.log(tlist);
 - //console.log(this.state.title+'22')
 - this.setState({
 - comments:data.enttityList,
 - lottery:data.enttityList[0].lottery
 - });
 - var slist=JSON.stringify(this.state.comments);
 - console.log(slist)
 - //console.log(this.state.comments+'33')
 - }.bind(this),
 - error: function(xhr, type){
 - alert(xhr+type+'Ajax error!'); //error
 - }
 - });
 - //console.log(this.state.comments+'++++--!!'); //ajax底下拿不到结果因为提前于异步
 - },
 - render: function () {
 - // this.state 用于存储当前的数据
 - var comments = this.state.comments;
 - //var dataHtml=movies.map(<p>{name}</p>);// 注意这里 bind(this) 修正了上下文
 - /****** Movies子模板 ******/
 - function renderMovies({id,name}){
 - return <li>{id}-{name}</li>;
 - }
 - /****** Movies大模板[内嵌子模板] ******/
 - //var dataHtml = movies.map(renderMovies);
 - /****** Movies大模板[外调子模板] ******/
 - var dataHtml = movies.map(function(movies){
 - return (
 - <MoviesList _movies={movies}/>
 - )
 - }.bind(this));// 注意这里 bind(this) 修正了上下文
 - //console.log('movies:'+movies+'--'+'dataHtml:'+dataHtml);
 - /****** Ajax子模板******/
 - function renderComment({plat,type,name,guid,cre_time,lottery}){
 - return <li>{plat}--{type}--{name}--{guid}--{cre_time}--{lottery}</li>;
 - }
 - /****** Ajax大模板 ******/
 - var AjaxHtml = this.state.comments.map(renderComment);
 - //var AjaxHtml='11'
 - console.log('comments:'+comments+'--'+'AjaxHtml:'+AjaxHtml);
 - return (
 - <ul>{AjaxHtml}</ul>
 - )
 - }
 - });
 - /****** ES5输出给router ******/
 - module.exports=DemoComponent;
 - /****** ES6输出给router ******/
 - //export default DemoComponent;
 
使用ES5||ES6 -- 输入文件示例 [调用所依赖的模块]:
JavaScript代码
- /****** ES5调用依赖模块[require]被打包会自动生成关联代码 ******/
 - var MyComponent = require('./components/movie-list');
 - /****** ES6调用依赖模块 ******/
 - import MyComponent from './components/movie-list';
 
使用ES5||ES6 -- 输出文件示例[输出给被依赖模块]:
JavaScript代码
- /****** ES5输出给router ******/
 - module.exports=DemoComponent;
 - /****** ES6输出给router ******/
 - //export default DemoComponent;
 
使用ES5 -- 创建一个组件:
JavaScript代码
- /****** 使用Es5语法 React.createClass 创建一个组件 ******/
 - var DemoComponent = React.createClass({
 - /****** 使用 getInitialState 的返回值作为数据的默认值(!return) ******/
 - getInitialState: function () {
 - return {
 - loading: true,
 - title: '我喜欢的电影',
 - // 注意这里将 外部传入的数据赋值给了 this.state
 - movies: []
 - }
 - },
 - /****** 输出HTML模板,此处可以调用子组件******/
 - render: function () {
 - return (
 - <div className="component-hello">
 - {this.state.title}
 - </div>
 - )
 - }
 - });
 
使用ES5 -- map遍历当前Array并调用渲染数据的[外部]子组件:
JavaScript代码
- /****** 使用Es5语法 遍历数组并调用外部子组件 ******/
 - var MoviesList=React.createClass({...});
 - var dataHtml = movies.map(function(movies){
 - return (
 - <MoviesList _movies={movies}/>
 - )
 - }.bind(this));// 注意这里 bind(this) 修正了上下文
 - return (
 - <ul>{dataHtml}</ul>
 - )
 - /****** 外部子组件map数组当做模板之用 ******/
 - var MoviesList = React.createClass({
 - render: function () {
 - // this.props 用于从组件外部传入数据
 - var _movies = this.props._movies;
 - return (
 - <li className="datali">
 - {_movies.id}-{_movies.name}
 - </li>
 - )
 - }
 - });
 
使用ES5 -- map遍历当前Array并调用渲染数据的[内部]子组件:
JavaScript代码
- /****** 使用Es5语法 遍历数组并调用内部子组件 ******/
 - function renderMovies({id,name}){
 - return <li>{id}-{name}</li>;
 - }
 - var dataHtml = movies.map(renderMovies);
 - return (
 - <ul>{dataHtml}</ul>
 - )
 
Ajax获取接口数据并设置到state :
JavaScript代码
- componentDidMount(){
 - $.ajax({
 - type: 'GET',
 - url: 'http://code.liuxinxiu.com/php/Interface/Jsoncallback.php', //JSONP接口
 - data: {GUID:'1'},
 - dataType:'jsonp', //告诉Ajax调用$jsonp
 - jsonp: "Jsoncallback", //zpeto-1.2支持自定义回调名
 - success: function(data){
 - var yy=JSON.stringify(data);
 - var tlist=JSON.stringify(data.enttityList);
 - //console.log(tlist);
 - //console.log(this.state.title+'22');
 - this.setState({
 - comments:data.enttityList,
 - lottery:data.enttityList[0].lottery
 - });
 - var commentsStr=JSON.stringify(this.state.comments);
 - console.log("\n--->>commentsStr:\n"+commentsStr); //查看获取的数据
 - //console.log(this.state.comments+'33')
 - }.bind(this),
 - error: function(xhr, type){
 - alert(xhr+type+'Ajax error!');
 - }
 - });
 - //console.log(this.state.comments+'++++--!!'); //ajax底下拿不到结果因为提前于异步
 - }
 
react 的事件调用分类
C#代码
- 触摸事件:onTouchCancel\onTouchEnd\onTouchMove\onTouchStart
 - (只会在移动设备上接受)
 - 键盘事件:onKeyDown\onKeyPress\onKeyUp
 - 剪切事件:onCopy\onCut\onPaste
 - 表单事件:onChange\onInput\onSubmit
 - 焦点事件:onFocus\onBlur
 - UI元素:onScroll(移动设备是手指滚动和PC的鼠标滑动)
 - 滚动事件:onWheel(鼠标滚轮)
 - 鼠标类型:onClick\onContextMenu(右键)\onDoubleClick\onMouseDown\onMouseEnter\
 - onMouseLeave\onMouseMove\onMouseOut\onMouseOver\onMouseUp
 - onDrag\onDrop\onDragEnd\onDragEnter\onDragExit\onDragLeave\onDragOver\onDragStart
 


  
 
 
 
 
 


