基于Antd框架的通信与交互

1、与用户交互

对于input输入框,在于用户交互的过程中,用户在输入任何东西时,都会引起该组件的onChange事件(如果写有这个方法的话)。

<FormItem
{...formItemLayout}
style={{ display: getFieldValue('type') === '活动' ? 'none' : 'block' }}
label={<span>跳转网址</span>}
>
<Input
id="target"
placeholder="活动无需输入网址"
onChange={e => {
this.onChange1(e);
}}
style={{ width: 300 }}
/>
</FormItem>

可以看到,input输入框一般放在表单里,所以用FormItem将他框起来,在input组件的属性中,首先进行数据绑定,id就是用于和后端交互的数据(命名一定要匹配),不仅有使用id这个方法,我们还可以使用getFieldDecorator方法进行绑定(以后再介绍),然后是placeholder属性,这个属性是组件提示显示词。再就是style这个属性,自然不用介绍了,在formItem这个大的style展示之后,再进行细微的调整。最后就是onChange方法了,这里的写法可以看到,e这个参数可以任意取名,将e传到onChange方法,现在我们看看onChange方法。

  onChange1 = e => {
console.log(e.target.value);
this.state.target = e.target.value;
};

这里我先将用户的输入打印出来,每次输入(哪怕是一个单词)都会引起该方法的调用,然后用

this.state=e.target.value

这个语句是将用户的输入传给该组件的状态state,那么无论输入什么,该网页的状态总是保持最新的状态(与用户保持一致)

要注意的是,state这个东西可以由我们自己创建,可以一个组件对应一个state,也可以多个组件对应一个state

            <FormItem
{...formItemLayout}
label={<span>选择活动</span>}
style={{ display: getFieldValue('type') === '活动' ? 'block' : 'none' }}
>
<Select
id="target"
placeholder="选择活动"
style={{ width: 300 }}
onChange={e => {
this.handleActivity2(e);
}}
>
{list.map(it => (
<Select.Option key={it.id} value={it.title}>
{it.title}
</Select.Option>
))}
</Select>
</FormItem> <FormItem
{...formItemLayout}
style={{ display: getFieldValue('type') === '活动' ? 'none' : 'block' }}
label={<span>跳转网址</span>}
>
<Input
id="target"
placeholder="活动无需输入网址"
onChange={e => {
this.onChange1(e);
}}
style={{ width: 300 }}
/>
</FormItem>

这段代码实现了组件动态关联(下面再介绍),可以看到,两个formItem里的组件:input和select都是绑定的‘target’这一state,共同实现对他的修改,下面看看handleActivity这一方法的实现。

  handleActivity2 = e => {
console.log(e);
this.state.target = e;
};

这里我也有一点不懂的地方,为什么select组件在调用onChange方法的时候也是传e,但在方法体中,e才是用户的输入,而不是e.target.value。

2、与后端交互

在完成上述用户对每个页面的参数修改以后,state就是记录着这些数据,然后通过点击“确认”按钮,就可以提交表单了

<Button type="primary" htmlType="submit"loading={submitting}>
确定
</Button>

这里,htmlType属性在antd中是用来指定样式的,该按钮是蓝色的,loading属性和加载相关,和性能相关,这里不仔细叙述,确认按钮在antd中会自动绑定到handleSubmit这一方法,该方法的实现:

  handleSubmit = e => {
const { dispatch } = this.props;
e.preventDefault();
if (this.refs.pics.state.fileList.length > 0)
this.state.image = this.refs.pics.state.fileList[0].response.url;
console.trace(this.state);
dispatch({
type: 'systemSetting/apiCreateRotation',
payload: {
image: this.state.image,
type: this.state.type,
target: this.state.target,
},
});
};

要想将数据传到后端,需要借助dispatch这一载体,该属性要想使用,一定要从this.props中取出来。之后是e.preventDefault语句,不加的话该方法不会有作用,在dispatch中,首先指定type,‘/’号的前面是model的名称,后面是model中的某个方法。payload则是具体载体,说明我该将哪些组件的state传给后端。下面给出model中调用的方法。

    *apiCreateRotation({ payload }, { call, put }) {
const response = yield call(apiCreateRotation, payload);
if (isResponseSuccess(response)) {
message.success('创建成功');
yield put({
type: 'createsuc',
payload: response,
});
} else {
message.error('创建失败:' + response.message);
}
},

该方法使用call调用到了后端的接口,该思想就是基于服务的软件开发,即:你给我接口和相应的使用规则,我给你发送数据,然后将处理后的数据再传给我。有效实现了前后端的分离,降低耦合度,这也算是学以致用了吧,至此,antd前后端的通信基本流程介绍完了。

基于Antd框架的通信与交互的更多相关文章

  1. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  2. QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件

    QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...

  3. 基于laravel框架构建最小内容管理系统

    校园失物招领平台开发 --基于laravel框架构建最小内容管理系统 摘要 ​ 针对目前大学校园人口密度大.人群活动频繁.师生学习生活等物品容易遗失的基本现状,在分析传统失物招领过程中的工作效率低下. ...

  4. 基于SSH框架的学生公寓管理系统的质量属性

    系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...

  5. 基于netty框架的Socket传输

    一.Netty框架介绍 什么是netty?先看下百度百科的解释:         Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开 ...

  6. 基于OpenSSL的HTTPS通信C++实现

      HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL.Nebula是一个为开发者提供一个快速开发 ...

  7. 基于SSH框架的在线考勤系统开发的质量属性

    我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...

  8. 基于SSH框架的学生选课质量属性分析

    系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...

  9. 基于SSH框架的网上书店系统开发的质量属性

    基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...

随机推荐

  1. Postman使用入门

    https://jingyan.baidu.com/article/0f5fb09907e3046d8334ea2f.html Postman测试管理的单位是测试集(Collections),测试集内 ...

  2. LRJ-Example-06-02-Uva514

    #define _CRT_SECURE_NO_WARNINGS #include<cstdio> #include<stack> using namespace std; + ...

  3. 只要是使用函数file_get_contents访问 https 的网站都要开启

    使用file_get_contents();报错failed to open stream: Unable to find the socket transport "ssl" - ...

  4. 微信公众号无法使用css3的多行省略

    解决通过伪元素 .text{ width: 100%; position:relative; overflow:hidden; height: 20px /* overflow : hidden; t ...

  5. canvas+js实现验证码功能

    转载自:https://blog.csdn.net/qq_42463851/article/details/90755734<!DOCTYPE html> <html> < ...

  6. 我爱自然语言处理bert ner chinese

    BERT相关论文.文章和代码资源汇总 4条回复 BERT最近太火,蹭个热点,整理一下相关的资源,包括Paper, 代码和文章解读. 1.Google官方: 1) BERT: Pre-training ...

  7. SuperSocket根据条件获取 Session

    如果你有一个自定义的属性 "CompanyId" 在你的 AppSession 类之中,如果你想要获取这个属性等于某值的 的所有 Session, 你可以使用 AppServer ...

  8. js中的数据类型及常用属性和方法

    JavaScript 字符串 字符串(或文本字符串)是一串字符(比如 "Bill Gates").字符串被引号包围.您可使用单引号或双引号您可以在字符串内使用引号,只要这些引号与包 ...

  9. Java反射机制(五):使用反射增强简单工厂设计模式

    关于简单工厂设计模式的讲解,可参考博文<设计模式: 简单工厂模式>,此处不再介绍:  我们先观察之前介绍的关于简单工厂: public class OperateFactory { pub ...

  10. HDU 2066最短路径Dijkstra、

    思路:枚举所有起点城市然后比较每个起点所去喜欢城市的最小距离 #include<cstdio> #include<cmath> #include<cstring> ...