使用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