Ant Design框架中不同的组件访问不同的models中的数据

本文记录了我在使用该框架的时候踩过的坑,方便以后查阅。


一、models绑定

在某个组件(控件或是页面),要想从某个models中获取数据,则必须在@connect中进行绑定,不管这个models是在同包下还是别的包下。因为每个models的namespace具有唯一性,所以可以任意绑定:

@connect(({ activity, stadiumList, loading }) => ({
activity,
stadiumList,
submitting: loading.effects['activity/apiUpdateActivity2'],
}))
@Form.create()
class UpdateActivity extends PureComponent

可以看到,我定义了一个UpdateActivity的组件,该组件返回的是一个页面,该页面需要用到两个models中的数据,这两个models的namespace分别是:activity、stadiumList。正如上面所述,想要访问不同models,必须要在@connect中显式的生声明这两个models的namespace。

二、从models中取数据

然后要从中去数据的话,可行的办法有:

(1)只需要从里面读一个数据

    const {
activity: { stadiumId },
} = this.props;

这是从命名控件为activity的models中取出list这个数据(要知道,models只是装填数据的容器,就算绑定了这个models,它也不会将数据传给你,只能你自己主动的去取。但要注意,没有绑定的话,是访问不到这个models的)

(2)需要从里面读很多数据

const { activity } = this.props;

我可以直接从this.prop中取出这个models的全部内容,可以像以下这么用:

activity.id;
acitvity.name;
activity.list
等等

只要在这个models里的state里面定义了数据(如:id、name、list等),则都可以被访问到。

(3)models中的数据可以被绑定它的组件修改

  onChange4 = e => {
const { activity } = this.props;
activity.id = e.target.value;
};
onChange5 = e => {
const { activity } = this.props;
activity.label = e.target.value;
};
onChange6 = e => {
const { activity } = this.props;
activity.title = e.target.value;
};

如上述代码所示,每个onChange方法均是Input框在触发onChange属性的时候调用的,可以看到,我先像(2)一样,从全局props中取出绑定的models,然后通过“activity.”的方式进行赋值。然后在提交表单时,我会在dispatch中这样写:

  handleSubmit = e => {
const { dispatch } = this.props;
const {
activity: {
allowWish,
contactPhone,
content,
id,
label,
title,
tips,
holdOrganization,
locationDes,
stadiumId,
},
} = this.props;
dispatch({
type: 'activity/apiUpdateActivity2',
payload: {
allowWish,
contactPhone,
content,
id,
label,
title,
tips,
holdOrganization,
locationDes,
stadiumId
}

可以看到,我从models中取出这些被改变了的数据,并调用相应接口。这样做的好处就是,我不需要在本页面(即组件)的state中再定义一大堆数据,简化了代码。

注意:不同组件在互相通信时,需要在models中定义要传递的变量。而组件与后端通信时,不必在models中写出相应的变量,但通常可以显式的写出来,增加代码的可读性

Ant Design框架中不同的组件访问不同的models中的数据的更多相关文章

  1. 关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法

    一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成 这就需要父子组件之间的通信,代码如下: 1. 建立一个用于父子组 ...

  2. Ant Design Pro 学习三 新建组件

    在 src/components 下新建一个以组件名命名的文件夹,注意首字母大写 在使用组件时,默认会在 index.js 中寻找 export 的对象,如果你的组件比较复杂,可以分为多个文件,最后在 ...

  3. vue中使用分页组件、将从数据库中查询出来的数据分页展示(前后端分离SpringBoot+Vue)

    文章目录 1.看实现的效果 2.前端vue页面核心代码 2.1. 表格代码(表格样式可以去elementui组件库直接调用相应的) 2.2.分页组件代码 2.3 .script中的代码 3.后端核心代 ...

  4. Ant Design(ui框架)

    官方文档:https://ant.design/docs/react/introduce-cn 说明:Ant Design 是一个 ui框架,和 bootstrap 一样是ui框架.里面的组件很完善, ...

  5. 如何用 Blazor 实现 Ant Design 组件库

    本文主要分享我创建 Ant Design of Blazor 项目的心路历程,已经文末有一个 Blazor 线上分享预告. Blazor WebAssembly 来了! Blazor 这个新推出的前端 ...

  6. Vue框架——页面组件中使用小组件

    小组件在components文件夹中,页面组件在views文件夹中 一.先写小组件的vue,比如text.vue(在template设置模板渲染,style设置样式) <template> ...

  7. React+Ant Design设置左侧菜单导航路由的显示与隐藏(与权限无关)

    最近在学习react时,用到了很流行的UI框架Ant Design,也了解了一下Ant Design Pro,发现它们都有导航组件,Ant Design框架的导航菜单在这里,Ant Design Pr ...

  8. Ant Design项目记录和CSS3的总结和Es6的基本总结

    这里主要是介绍自己运用ANT框架的一些小总结,以前写到word里,现在要慢慢传上来, 辅助生殖项目总结:从每个组件的运用的方法和问题来总结项目. 1.项目介绍 辅助生殖项目主要运用的是Ant.desi ...

  9. ant design pro(一)安装、目录结构、项目加载启动【原始、以及idea开发】

    一.概述 1.1.脚手架概念 编程领域中的“脚手架(Scaffolding)”指的是能够快速搭建项目“骨架”的一类工具.例如大多数的React项目都有src,public,webpack配置文件等等, ...

随机推荐

  1. macOS上搭建RabbitMQ+MQTT服务器

    1. 下载RabbitMQhttps://www.rabbitmq.com/install-standalone-mac.html或通过brew直接安装RabbitMQ brew install ra ...

  2. CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. spring+mybatis 整合

    项目目录: 一.导入pom.xml依赖 最下边有 二.在applicationContext.xml配置连接器和数据库的数据源 三.流程:用户请求数据,springmvc解析url,通过控制器和适配器 ...

  4. pytorch lstm crf 代码理解 重点

    好久没有写博客了,这一次就将最近看的pytorch 教程中的lstm+crf的一些心得与困惑记录下来. 原文 PyTorch Tutorials 参考了很多其他大神的博客,https://blog.c ...

  5. 条件随机场(CRF) - 3 - 概率计算问题

    声明: 1,本篇为个人对<2012.李航.统计学习方法.pdf>的学习总结,不得用作商用,欢迎转载,但请注明出处(即:本帖地址). 2,由于本人在学习初始时有很多数学知识都已忘记,所以为了 ...

  6. Linux中ifcfg-eth0配置参数说明

    ifcfg-eth0在/etc/sysconfig/network-scripts下, 其配置如下: DEVICE=物理设备名IPADDR=IP地址NETMASK=掩码值NETWORK=网络地址BRO ...

  7. [转载] linux find 命令

    转载自 http://www.jb51.net/os/RedHat/1307.html Linux下find命令在目录结构中搜索文件,并执行指定的操作. Linux下find命令提供了相当多的查找条件 ...

  8. POJ 2763"Housewife Wind"(DFS序+树状数组+LCA)

    传送门 •题意 一对夫妇居住在 xx村庄,给村庄有 $n$ 个小屋: 这 $n$ 个小屋之间有双向可达的道路,不会出现环,即所构成的图是个树: 从 $a_i$ 小屋到 $b_i$ 小屋需要花费 $w_ ...

  9. ES6 set和map数据结构对对象数组去重简单实现

    自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [. ...

  10. 关于Android studio Haxm加速器安装

    首先,在SDK manager中要安装如下选项 安装后,在启动虚拟机时如果提示你没有Install Haxm,在目录sdk\extras\intel\Hardware_Accelerated_Exec ...