主要技术组件 |
---|
React组件开发:1. JSX 2. Class组件 3.函数式组件 |
React hooks :函数式编程中状态钩子 |
React Router:组件路由 |
React Redux:集中管理react组件状态 |
Antd组件库 |
Typescript |
sass :CSS扩展语言 |
webpack:JavaScript 应用程序的静态模块打包器(module bundler) https://www.webpackjs.com/ |
Babel:javascript语法引擎 |
umi是一个可插拔的企业级 react 应用框架。 |
安装脚手架:
mkdir myapp && cd myapp //空目录
npx @umijs/create-umi-app |
React和JSX编译过程
JSX->使用react构造组件,babel进行编译->javascript对象->ReactDOM.render()->DOM元素->插入页面
注意:组件名必须大写,否则报错
组件样式 1.行内样式(React推荐使用) 2. 使用class
class ==> className , for ==> htmlFor(label)
事件处理 1.事件绑定:on +事件名
2.事件handler写法: 直接在render里写行内的箭头函数(不推荐) ;
在组件内使用箭头函数定义一个方法(推荐) ;
直接在组件内定义一个非箭头函数的方法,然后在render里直接使用 onClick= {this.handleClick.bind(this)} (不推荐) ;
直接在组件内定义一个非箭头函数的方法,然后在constructor里bind(this)(推荐)
3.Event对象和一般的window一样e
状态:state
属性:props
组件通信方式 1.父子组件通信方式; 2.非父子组件通信方式(状态中间人;发布订阅模式实现;context状态树传参);
dangerouslySetInnerHTML :设置富文本属性显示
是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
使用hooks原因 1.高阶组件为了复用,导致代码层级复杂;2.生命周期的复杂;3.写成functional组件,无状态组件 ,因为需要状态,又改成了class,成本高;
Hook类型 |
---|
1. useState :处理副作用 |
useEffect :处理副作用 |
useContext :不使用组件嵌套就可以订阅React的Context.减少组件层级 |
useCallback 记忆函数 |
useMemo :记忆组件 |
useRef:保存引用值 |
useReducer 减少组件层级 |
useImperativeHandle |
useLayoutEffect : 同步执行副作用 |
useDebugValue :调试 |
Hook使用规则
3.容器组件与UI组件
UI组件
容器组件
npx create-react-app my-app-ts --template typescript
npm i --save react-router-dom //安装路由
npm i --save @types/react-router-dom //编译器需要通过这个声明文件,进行类型检查工作.
注意:typescript学习,需要对面向对象编程有比较好的理解,如:类、继承、接口、泛型等,对于会java或者c#编程的同学相对而友好
Antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品.
https://ant.design/docs/react/getting-started-cn
特性:
提炼自企业级中后台产品的交互语言和视觉风格。
开箱即用的高质量 React 组件。
使用 TypeScript 开发,提供完整的类型定义文件。
⚙️ 全链路开发和设计工具体系。
数十个国际化语言支持。
深入每个细节的主题定制能力。
安装
npm install antd --save
sass安装:
注意:sass依赖于ruby,必须先安装ruby.mac下自带,可以不安装;
执行如下命令安装:
gem install sass
出现如此权限提示:
加权限:sudo gem install sass
sudo gem install compass
查看sass安装版本:sass -v
compass -v
//更新sass
gem update sass
//查看sass版本
sass -v
//查看sass帮助
sass -h
Visual Studio Code插件Live Sass Compiler可将Sass或Scss实时编译为CSS
1.采用浅copy;
2.每次修改一个 Immutable 对象时都会创建一个新的不可变的对象,在新对象上操作并不会影响到原对象的数据。
2.Mobx与redux区别:
是一个可插拔的企业级 react 应用框架,umi 以路由为基础的,支持类 next.js 的 约定式路由,以及各种进阶的路由功能,并以此进行功能扩展,比如支持路由级的按需加载。umi 在约定式 路由的功能层面会更像 nuxt.js。开箱即用,省去了搭框架的时间。
安装脚手架:
mkdir myapp && cd myapp //空目录
npx @umijs/create-umi-app
index.css
.active{
background:blue;
}
import ReactDOM from 'react-dom';
import 'antd/dist/antd.css';
import {Button, DatePicker ,version} from 'antd';
import React, { Component } from 'react';
import './index.css'
/**
*1. react组件嵌套&样式引用
*/
class Navbar extends Component {
render() {
return <div className="active">navbar</div>
}
}
/*函数组件 */
function Swiper(){
return <div>Swiper</div>
}
/*es箭头函数 */
const Tabbar=()=><div>
<h1>antd verson:{version}</h1>
<DatePicker/>
<Button type="primary" style={{marginLeft:8}}>
Primary Button
</Button>
</div>
export default class App extends Component {
render() {
return (
<div className="app">
<Navbar></Navbar>
<Swiper></Swiper>
<Tabbar></Tabbar>
</div>
)
}
}