zoukankan      html  css  js  c++  java
  • 这几天写的react+ant design

    总的流程就是从后端查出数据,然后在前端页面展示,其中列表包含查询,分页,以及table表格中通过点击在页面上悬浮一个框,显示与本行具有相关性的数据;

    总的前端页面分为六个文件:路由router.js,页面index.js,页面相关List.js model下的监控.js,service下的.js以及最后一步的config.js

    其中、基本操作一次的为config.js,就是service下的url的延伸或者说是便于管理url的中心;

    service下的js为真正model调用的url,其中大概长这样:

    里面的参数应该很好懂;

    然后就是经常操作的index.js,model下的js,以及index的延伸页面;

    明天总结。。。

    接着来:

    model下的js

    import { get } from 'services/operation/privateLineService'//这里就是去获取service下的js,也就是获取自己需要的url
    import modelExtend from 'dva-model-extend'
    import {pageModel} from "../../common";
    import pathToRegexp from "path-to-regexp";
    
    export default modelExtend (pageModel,{
    
      namespace: 'customerDedicatedLineDetail',//命名空间
    
      state: {
        detail: {},
        visible: false,
      },
    subscriptions: {//对页面的监控,***代表的是页面路径,也就是router上匹配的路径 setup ({ dispatch, history }) { history.listen(({ location})
    => {if(location.pathname === '***') {
            const query = location.query  dispatch({   type:
    'query',   query }) } } }) }, },
     effects: {//进入页面触发所有的方法,在query中
      * query({payload = {}}, {call, put}) {

      yield put({
       type: '123',
      payload: {
       ...payload,
      range: "2"
       },
      }),
      //yield put({
     // type: '12345',
     // payload: {
     //  ...payload,
     //  range: "2"
      //},
      //}),
      },
      * 123({payload = {}}, {call, put,select}) {
      const { currentLineId } = yield select(_ => _.app)
      payload.currentLineId = currentLineId
      const { success, data } = yield call("url的值", payload)
      if (success) {
       yield put({
       type: 'updateState',
       payload: {
       weekCountLineData: data,
       },
       })
       }
      },
      }, 
    reducers: {
    updateState(state, { payload }) {
    return { ...state, detail: payload.item, visible: true }
    }
    },
    }
    )

    这大概是model中一个精简的过程,然后是index.js

    这里主要是应该用ant design中的<Table/>进行数据展示,这里有一个自己觉得是亮点的就是传过来的数值能自动去匹配table的行,比如说table的columns是这样的:

    const baseColumns = [
        {
          title: '序号',
          dataIndex: 'id',
          key: 'id',
        },
        {
          title: '名称',
          dataIndex: 'name',
          key: 'name',
    
        }, {
          title: '创建时间',
          dataIndex: 'createTime',
          key: 'createTime',
          render: text => moment(text)
            .format('YYYY-MM-DD HH:mm'),
        },
    ]

    然后Table的dataSource为一个数组,然后数组中的对象也好,hashMap也好,只要他的key与colums中的dataIndex与key想匹配,就可以展示;

    这是第一;

    第二是对table中的指定cell做特别处理;

    因为我们的需求是点击指定的cell后,要展示与本条数据相关的数据(这条数据是通过点击触发事件,然后获取的),当时是通过ant design 中的<Popover/>与<Button/>组合而成,这里遇到的一个问题就是通过点击button,popover展示的效果不正常,有兴趣的可以试一试是什么效果;然后通过点化,用到了<modol/>组件,他是通过visible来控制显示与否,类似于下面:

    {
          title: 'ddss',
          dataIndex: 'serviceNum',
          key: 'serviceNum',
          render: (text, row, record) => (
            <div>
              <Button id="buttonId" onClick={e => getSecurityServiceList(row.id)}>{text}个服务</Button>
              <Modal visible={visible}
                     style={{ right: 20 }}
                     keyboard={true}
                     mask={false}
                //onOk={handleOk}
                     onCancel={handleOk}
                     footer={[]}
              >
                {content1()}
              </Modal>
            </div>
          ),
        },

    具体的api可以取官网查询,但是吧,本人觉得官网的api很多,但是有好多不知道怎么使用,所以还是得拿上api去找百度。

    这里面还遇到一个react的知识点,就是在做搜索的时候,遇到这个:

    const ddss= () => {
        setTimeout(() => {
          validateFields((err) => {
            if (!err) {
              const data = {
                ...getFieldsValue(),
              }
              const keywords=data.keywords
              getFilter(keywords)
            }
          });
        }, 0);
      }

    这里的getFiledDecorator识别失败,

    就算在开头导入

    还是失败了

    这是为啥???

    通过百度的值,在向外暴露的过程中,需要改成这样:

    export default Form.create()(List)
    原来应该是:
    export default List
  • 相关阅读:
    《数据库原理》课程笔记 (Ch04-数据库管理系统)
    《数据库原理》课程笔记 (Ch03-数据库语言)
    《操作系统》课程笔记(Ch07-死锁)
    《数据库原理》课程笔记 (Ch02-数据模型)
    《数据库原理》课程笔记 (Ch01-引论)
    《计算机网络》课程笔记 (Ch02-应用层)
    《ES6标准入门》读书笔记 第5章
    《ES6标准入门》读书笔记 第4章
    《ES6标准入门》读书笔记 第3章
    《计算机网络》课程笔记 (Ch01-计算机网络和因特网)
  • 原文地址:https://www.cnblogs.com/notchangeworld/p/11688090.html
Copyright © 2011-2022 走看看