feat:新增react相关
This commit is contained in:
parent
83e7ea9f59
commit
642f06dfdf
115
docs/fea/react/pattern.md
Normal file
115
docs/fea/react/pattern.md
Normal file
@ -0,0 +1,115 @@
|
||||
---
|
||||
nav:
|
||||
title: 前端
|
||||
path: /fea
|
||||
group:
|
||||
title: 💊 React
|
||||
order: 4
|
||||
path: /react
|
||||
---
|
||||
|
||||
## 💊 React
|
||||
|
||||
### 介绍
|
||||
|
||||
世界知名三大框架之一,我认为热度目前为首吧
|
||||
|
||||
```jsx
|
||||
import React from 'react';
|
||||
|
||||
class Btn extends React.Component {
|
||||
constructor({ children }) {
|
||||
super(...arguments);
|
||||
}
|
||||
|
||||
state = {
|
||||
size: 16,
|
||||
BTN_COLORS: new Map([
|
||||
['danger', 'red'],
|
||||
['primary', 'blue'],
|
||||
['warn', 'yellow'],
|
||||
['normal', '#aaa'],
|
||||
]),
|
||||
};
|
||||
|
||||
componentDidMount() {}
|
||||
|
||||
render() {
|
||||
const { children, type, id } = this.props;
|
||||
const { size, BTN_COLORS } = this.state;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<div
|
||||
id={id}
|
||||
className="btn"
|
||||
onClick={() => this.setState({ size: size + 1 })}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
<style jsx>{`
|
||||
.btn {
|
||||
cursor: pointer;
|
||||
display: inline-block;
|
||||
padding: 20px;
|
||||
font-size: ${size}px;
|
||||
text-align: center;
|
||||
color: ${BTN_COLORS.get(type) || '#eee'};
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
`}</style>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default class Demo extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
<h2>秒表</h2>
|
||||
<Btn id="1" type="normal">
|
||||
计次
|
||||
</Btn>
|
||||
<Btn id="2" type="danger">
|
||||
停止
|
||||
</Btn>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 高阶组件(HOC)
|
||||
|
||||
高阶组件的几个原则:
|
||||
|
||||
1. 不能去修改作为参数的组件,是一个纯函数,不能有副作用
|
||||
2. 结果必须是一个新的 React 组件,新组件的 JSX 部分包含作为参数的组件
|
||||
3. 一般需要把传给自己的 props 转手传递给作为参数的组件
|
||||
|
||||
```jsx
|
||||
import React from 'react';
|
||||
|
||||
class Demo extends React.Component {
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
render() {
|
||||
const { store } = this.props;
|
||||
return <div>艹 {store}</div>;
|
||||
}
|
||||
}
|
||||
|
||||
const withFuckU = (Component) => {
|
||||
const NewComponent = (props) => {
|
||||
return <Component {...props} store="fuck you" />;
|
||||
};
|
||||
return NewComponent;
|
||||
};
|
||||
|
||||
export default withFuckU(Demo);
|
||||
```
|
||||
|
||||
react 和设计模式 doing...
|
Loading…
Reference in New Issue
Block a user