当前位置:   article > 正文

React Ant design pro 访问服务器接口,获取数据显示_ant design pro如何访问数据库

ant design pro如何访问数据库

                                                          React Ant design pro 访问服务器接口

一、前两天更新了Ant design pro环境搭建,需要了解的小伙伴可以看一下之前的内容,还有react基础教程噢。

二、框架搭建完后,一般第一时间都是查看官方文档,但我依然看的还是一头水务,有许多知识点还是不太了解。

       官方文档地址:https://pro.ant.design/docs/getting-started-cn

       里面已经详细的介绍了一些最基本的框架基础,每个文件夹是做什么用的,都已经进行了阐述,文档一定要多读几遍,多读几遍才能看到一些已经被自己忽略掉的知识点。刚拿到框架,无非就是了解页面该怎么写,菜单、路由在哪控制,与服务器该怎样进行通讯获取数据。这里我主要说一下怎么连接数据库,拿取数据显示。

三、知识点准备:

整个框架核心,应该了解一下dva是怎么操作数据的。dva官方地址:https://dvajs.com/guide/,这里就不在过多赘述了。

      官方文档给出的请求流程:

      在 Ant Design Pro 中,一个完整的前端 UI 交互到服务端处理流程是这样的:

  1. UI 组件交互操作;
  2. 调用 model 的 effect;
  3. 调用统一管理的 service 请求函数;
  4. 使用封装的 request.ts 发送请求;
  5. 获取服务端返回;
  6. 然后调用 reducer 改变 state;
  7. 更新 model。

四、前端部分编写

先看一下我的目录文件,需要创建或者更改的文件我都已经标注:

先在config.js文件中添加页面菜单:

在pages中创建页面,我的页面为Shop(记住页面名字要和config.js 文件配置一致噢):

index.jsx文件代码如下:

  1. import React, { PureComponent } from 'react';
  2. import { PageHeaderWrapper } from '@ant-design/pro-layout';
  3. import { connect } from 'dva';
  4. import TableBordered from './TableBordered';
  5. @connect(({ shop }) => ({
  6. ...shop,
  7. }))
  8. class Shop extends PureComponent {
  9. // 连接models层
  10. componentDidMount() {
  11. const { dispatch } = this.props;
  12. dispatch({
  13. type: 'shop/queryUser1',
  14. payload: {
  15. a: '1',
  16. b: '2',
  17. },
  18. });
  19. }
  20. render() {
  21. const { data } = this.props;
  22. return (
  23. <PageHeaderWrapper>
  24. <TableBordered arr={data}/>
  25. </PageHeaderWrapper>
  26. );
  27. }
  28. }
  29. export default Shop;

 shop.less

  1. // 样式文件默认使用 CSS Modules,如果需要,你可以在样式文件的头部引入 antd 样式变量文件:
  2. @import "~antd/lib/style/themes/default.less";

这里我创建了一个表格子组件TableBordered

  1. import React,{ PureComponent } from "react";
  2. import { Table } from "antd";
  3. import styles from "./index.less";
  4. const columns = [
  5. {
  6. title: "序号",
  7. dataIndex: "id",
  8. key:"id"
  9. },
  10. {
  11. title: "姓名",
  12. dataIndex: "userName",
  13. render: text => <a>{text}</a>,
  14. key: "userName"
  15. },
  16. {
  17. title: "年龄",
  18. className: "column-money",
  19. dataIndex: "age",
  20. key: "age"
  21. },
  22. {
  23. title: "学号",
  24. dataIndex: "studentNo",
  25. key: "studentNo"
  26. },
  27. {
  28. title: "性别",
  29. dataIndex: "sex",
  30. key: "sex"
  31. }
  32. ];
  33. class TableBordered extends PureComponent {
  34. render() {
  35. return (
  36. <div className={styles.container}>
  37. <div id="components-table-demo-bordered">
  38. <Table
  39. columns={columns}
  40. dataSource={[this.props.arr]}
  41. bordered
  42. />
  43. </div>
  44. </div>
  45. )
  46. }
  47. }
  48. export default TableBordered

index.less

  1. .container {
  2. :global {
  3. th.column-money,
  4. td.column-money {
  5. text-align: right !important;
  6. }
  7. }
  8. }

然后创建models层shop.js:

  1. import { queryUser1 } from "@/services/shop";
  2. export default {
  3. namespace: "shop",
  4. state: {
  5. data: {}
  6. },
  7. effects: {
  8. /**
  9. * @param payload 参数
  10. * @param call 执行异步函数调用接口
  11. * @param put 发出一个 Action,类似于 dispatch 将服务端返回的数据传递给上面的state
  12. * @returns {IterableIterator<*>}
  13. */
  14. *queryUser1({ payload }, { call, put }) {
  15. const response = yield call(queryUser1, payload);
  16. yield put({
  17. // 这行对应下面的reducers处理函数名字
  18. type: "save",
  19. payload: response
  20. });
  21. }
  22. },
  23. reducers: {
  24. /**
  25. *
  26. * @param state
  27. * @param action
  28. * @returns {{[p: string]: *}}
  29. */
  30. save(state, action) {
  31. return {
  32. ...state,
  33. data: action.payload
  34. };
  35. }
  36. }
  37. };

在创建service层,shop.js

  1. import { stringify } from "qs";
  2. // ant 自己封装好的发送ajax请求的工具
  3. import request from "@/utils/request";
  4. export async function queryUser1(params) {
  5. return request(`/server/api/test/user?${stringify(params)}`);
  6. }
  7. export async function queryUser2(params) {
  8. return request(`/server/api//test/user?${params}`, {
  9. method: "POST"
  10. });
  11. }

最后一步,修改配置config文件夹下的proxy.js:

至此前端部分就已经全部完成了。

五、后端部分编写

我这里采用的是spring boot,具体搭建顺序我这里就不做过多重复说明,请自行百度,也就几步操作,搭建完后,创建一个TestController控制器:

  1. package com.myapp.lsj.controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. import java.util.HashMap;
  5. import java.util.Map;
  6. @RestController
  7. @RequestMapping("api/test")
  8. public class TestController {
  9. @RequestMapping("user")
  10. public Map<String, Object> user(String a, String b) {
  11. Map<String, Object> map = new HashMap<>();
  12. map.put("id", "1");
  13. map.put("userName", "张三");
  14. map.put("age", 18);
  15. map.put("studentNo", "201602010246");
  16. map.put("sex", "男");
  17. return map;
  18. }
  19. }

六、运行结果效果:

由于我还在是初学阶段,在此记录一下自己的学习过程,其中还有许多需要优化的地方,接下来我会更新怎样去进行增删改操作,和大家一起进行学习,强烈建议:一定要先去认真看一遍es6语法,该框架采用的都是es6语法,比如:...、箭头函数等各自的用法,在看代码的过程中,不知道的语法点和写法,一定要先进行查询资料了解,这样更有利于理解代码。

欢迎来交流:1798274010@qq.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/475047
推荐阅读
相关标签
  

闽ICP备14008679号