React一——起源、安装、jsx
React 起源官网:https://doc.react-china.org/d... 出发点基于HTML的前端界面开发正变得越来越复杂,其本质问题基本都可以归结于: 相比传统型的前端开发,React开辟了一个相当另类的途径,实现了前端界面的高性能高效率开发。 安装a. 脚手架 cnpm i create-react-app -g b. 创建项目 create-react-app react-app c. 装好之后src 里只留index.js入口文件 react 与 react-dom react : react代码的构建 react-dom:将react代码渲染到页面上 //渲染主键 挂载点 ReactDom.render(<div>test</div>,document.getElementById('root')) d. index.js import React from 'react' import ReactDom from 'react-dom' React概念React不是一个完整的MVC框架,最多可以认为是MVC中的V(View),甚至React并不非常认可MVC开发模式;,因为MVC耦合度高,性能也不是很好 适用的项目:数据不断变化的大型应用程序?Why? 无状态组件和有状态组件(高阶组件)1、无状态组件:例如 const test = function(){ //情形一 return <div>test</div> //显示js逻辑 let x = 'test' return <div>{x}</div> //显示js逻辑2 let x = 'test' return ( <div> <div>{x}</div> <div>test</div> </div> ) } ReactDom.render(test(),document.getElementById('root')) 可以看到 无状态组件没有定义类 React.createClass 或者class Name extends React.Component 来创建自己的函数组件 2、有状态组件(高阶组件) React 特点和优势
全称为javascript xml,作用,帮助React构建虚拟dom结构,不使用JSX的话,需要使用React.createElement(tagName,options:(id,className),contents..) var child1 = React.createElement('li',null,'First Text Content'); var child2 = React.createElement('li','Second Text Content'); var root = React.createElement('ul',{ className: 'my-list' },child1,child2); 使用jsx语法会使react开发更为简单,xml指的只是借鉴了一些XML的语法,标签必须闭合,最外层必须有节点包裹 常用语法: 1、定义属性及元素 var node = ( <div className="container"> { person ? <span>Welcome back,<b>{person.firstName} {person.lastName}</b>!</span> : <span>Please log in</span> } </div> ); 2、事件绑定 <button onClick={this.checkAndSubmit.bind(this)}>Submit</button> 3、样式 <div style={{color: '#ff0000',fontSize: '14px'}}>Hello World.</div> 或: var style = { color: '#ff0000',fontSize: '14px' }; var node = <div style={style}>HelloWorld.</div>; 4、class类名用className 5、遍历 <ul> { arr.map(function(name){ return <li>{name}</li> <span style="color:#ff0000;">//必须要return出来否则在dom中不会显示</span> }) } </ul>, 6、用Babel进行jsx编译 npm install —save-dev babel-loader 只需稍微改变一下webpack.config.js的配置,将原来的jsx-loader变为babel-loader: module: { loaders: [ { test: /.jsx?$/,loaders: ['babel-loader']} ] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |