基于Antd框架的通信与交互
基于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框架的通信与交互的更多相关文章
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- QQ 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件
QQ 编辑 腾讯QQ(简称“QQ”)是腾讯公司开发的一款基于Internet的即时通信(IM)软件.腾讯QQ支持在线聊天.视频通话.点对点断点续传文件.共享文件.网络硬盘.自定义面板.QQ邮箱等多种功 ...
- 基于laravel框架构建最小内容管理系统
校园失物招领平台开发 --基于laravel框架构建最小内容管理系统 摘要 针对目前大学校园人口密度大.人群活动频繁.师生学习生活等物品容易遗失的基本现状,在分析传统失物招领过程中的工作效率低下. ...
- 基于SSH框架的学生公寓管理系统的质量属性
系统名称:学生公寓管理系统 首先介绍一下学生公寓管理系统,在学生公寓管理方面,针对学生有关住宿信息问题进行管理,学生公寓管理系统主要包含了1)学生信息记录:包括学号.姓名.性别.院系.班级:2)住宿信 ...
- 基于netty框架的Socket传输
一.Netty框架介绍 什么是netty?先看下百度百科的解释: Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开 ...
- 基于OpenSSL的HTTPS通信C++实现
HTTPS是以安全为目标的HTTP通道,简单讲是HTTP的安全版.即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL.Nebula是一个为开发者提供一个快速开发 ...
- 基于SSH框架的在线考勤系统开发的质量属性
我要开发的是一个基于SSH框架的在线考勤系统. 质量属性是指影响质量的相关因素,下面我将分别从6个系统质量属性(可用性,易用性,可修改性,性能,安全性,可测试性)来分析我的系统,以及如何实现这些质量属 ...
- 基于SSH框架的学生选课质量属性分析
系统:学生选课系统 框架:SSH(Struts2+Spring+Hibernate) 我做的是基于SSH框架的学生选课系统.学生选课系统的特性:①系统响应时间短,能够快速调出课程数据供学生选课提交.② ...
- 基于SSH框架的网上书店系统开发的质量属性
基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...
随机推荐
- poj 1263 Reflections (Simple Geometry)
1263 -- Reflections 简单计算几何.题目给出射线以及若干个不相交的圆,求出射线会在哪些圆上反弹,依次写出反弹球的编号. 代码如下: #include <cstdio> # ...
- wpf 登录时显示状态动态图
下面的示例演示了如何在登录过程时,界面上显示状态图标,登录完成后隐藏图标: public partial class MainWindow : Window { public MainWindow() ...
- mybatis 嵌套查询与懒加载
懒加载:对于页面有很多静态资源的情况下(比如网商购物页面),为了节省用户流量和提高页面性能,可以在用户浏览到当前资源的时候,再对资源进行请求和加载. fetchType="lazy" ...
- python深浅copy和赋值
Python直接赋值,浅copy和深copy的比较 基于引用和对象(python引用和对象分离) 总结: 直接赋值:a = b -->a,b两个引用指向相同的对象 浅copy:a为b的copy ...
- .net Framework 源代码 · ScrollViewer
本文是分析 .net Framework 源代码的系列,主要告诉大家微软做 ScrollViewer 的思路,分析很简单. 看完本文,可以学会如何写一个 ScrollViewer ,如何定义一个 IS ...
- 简单的Spring Batch示例
使用Spring Batch做为批处理框架,可以完成常规的数据量不是特别大的离线计算. 现在写一个简单的入门版示例. 这里默认大家已经掌握了Spring Batch的基本知识,示例只是为了快速上手实践 ...
- H3C IP地址动态获取过程
- Codeforces Round #561 (Div. 2)
C. A Tale of Two Lands 题意: 给出 n 个数,问有多少点对(x,y)满足 |x-y| ≤ |x|,|y| ≤ |x+y|: (x,y) 和 (y,x) 表示一种答案: 题解: ...
- 2019牛客暑期多校训练营(第二场)F.Partition problem
链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...
- 【矩阵乘法优化dp】[Codeforces 621E] Wet Shark and Blocks
http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test 2 seconds ...