学习地址1:https://pan.baidu.com/s/1t7YzuC7b3g2Nsm9frtGJZA 提取码: ughc 学习地址2:https://share.weiyun.com/zUoCBRio 密码:dc5hxc
什么是风控系统? 风控系统是指一系列的完整的风险控制,以保证事情向好的方向发展,而免受不可预估的经济和财产损失而措手不及。
风控类型 风控类型一般分为事前、事中、事后三种。
事前风控是指在交易指令发送到交易所前,对交易指令进行风险检测,通过检测的交易指令则提交到交易模块进行报单,未通过检测的交易指令将直接予以拒绝。对于追求低延时的交易策略,事前风控需要在极短的时间内完成。
事中风控主要是指在交易过程中,交易团队对策略的信号生成、执行情况进行监控以及盘中对策略的风险度进行实时监控。
事后风控是对交易数据在盘后进行分析,比如策略算法是否存在错误、策略的回撤是否可控、是否有计划外的持仓出现等,从而制定更严谨的业务风控预案和优化代码算法调整策略表现。 在src文件夹中创建一个新文件,文件命名为“AppState.tsx”,我们将会在这个文件中创建全局state和上下文组件contex component。 首先,引入我们需要的react框架。 interface AppStateValue { username: string, shoppingCart: { items: { id: number; name: string }[]; }; } 然后,打开Header.tsx,在这个文件中我们创建一个新的函数式react组件,顺便引入我们的css样式文件 import React from "react"; import styles from "./Header.module.css"; export const Header: React.FC = () => { return () }
那么接下来,我们来把signin页面从路径JSX代码中挪出去,以页面组件的形式渲染出来。既然是页面,那么我们在pages文件夹中创建signin的相关页面吧。在pages文件夹中创建子文件夹signin,然后创建我们的三大金刚,index.ts, SignInPage.tsx,以及SignInPage.module.css。请同学们先打开SignInPage.tsx,我们先为页面创建一个最简单的函数式组件,组件内渲染一个H1标题,标题名称登陆页面。 import React from "react"; export const SignInPage: React.FC = () => { return
SignIn
; }; 打开DetailPage.tsx,我们先引入react框架,创建一个最基本的函数式组件 import React from "react"; export const DetailPage: React.FC = (props) => { return (旅游路线详情页面
constructor(props){ super(props) this.state = { loading: true, error: null, productList: [], }; }
async componentDidMount() { try { const { data } = await axios.get( "http://123.56.149.216:8080/api/productCollections" ); this.setState({ loading: false, error: null, productList1: data, }); } catch (e) { this.setState({ loading: false, error: e.message, }); } }
Ok, 转菊花的控制状态配置完成,接下来就要在jsx代码中转菊花了,从组件state中展开loading 和 error。我们依旧使用最简单的方法,直接暴力使用一个if语句,当loading为ture的时候输出转菊花,就是渲染Spin组件,设置size大小为最大,“large”。然后定义一些inline style
if(loading)
{
return (
import axios from "axios";
export const getProductDetail = createAsyncThunk(
"productDetail/getProductDetail",
async (touristRouteId: string, thunkAPI) => {
thunkAPI.dispatch(productDetailSlice.actions.fetchStart());
try {
const { data } = await axios.get(
http://123.56.149.216:8080/api/touristRoutes/${touristRouteId}
);
thunkAPI.dispatch(productDetailSlice.actions.fetchSuccess(data));
} catch (error) {
thunkAPI.dispatch(productDetailSlice.actions.fetchFail(error.message));
}
}
);
在callback函数中去掉所有的dispatch,然后也删掉try catch,因为我们将会返回promise,让promise自己来处理。所以retun的应该是data这个对象。
export const getProductDetail = createAsyncThunk(
"productDetail/getProductDetail",
async (touristRouteId: string, thunkAPI) => {
const { data } = await axios.get(
http://123.56.149.216:8080/api/touristRoutes/${touristRouteId}
);
return data;
}
);