1.输入框

            <Item {...formItemProps} label="留房日期">
{getFieldDecorator('date', {
rules: [{ required: true, message: '请选择留房日期!' }],
})
(<RangePicker style={{ width: '66%', marginRight: '4%' }} value={date} onChange={this.setTotalPrice} />)
}
</Item>
<Item {...formItemProps} label="单价">
{getFieldDecorator('unitPrice', {
rules: [{ required: true, message: '请输入单价' }],
})(<Input placeholder="请输入" value={unitPrice} onChange={this.setTotalPrice} />)}
</Item>
<Item {...formItemProps} label="间数">
{getFieldDecorator('roomNum')(<InputNumber value={roomNum} onChange={this.setTotalPrice} />)}
</Item>

2.计算函数

  /**
* 计算总价:保留几位小数
* 总价=单价[unitPrice]*留芳天数[date]*间数[roomNum]
* 留房天数=留房天数:(留房结束时间-留房开始时间)+1
*/
setTotalPrice = (e) => {
const {
form:{
setFieldsValue
}
} = this.props
let {
unitPrice,
date,
roomNum,
} = this.state if(e.target){
if(e.target.id === 'unitPrice'){
unitPrice = e.target.value
}else{
roomNum = e.target.value
}
this.setState({
[e.target.id]: e.target.value
})
}else if(typeof(e) === 'number'){
roomNum = e
this.setState({
roomNum: e
})
}else{
const dateData = [e[0].format('YYYY-MM-DD'), e[1].format('YYYY-MM-DD')]
date = dateData
this.setState({
date: dateData
})
} if(unitPrice === '' || unitPrice === null || date === [] || date === null || roomNum === '' || roomNum === null) {
this.setState({totalPrice: ''})
setFieldsValue({ totalPrice: '' })
return
} const roomNumInt = parseInt(roomNum, 10)
const unitPriceFloat = parseFloat(unitPrice)
const leaveDayNum = getAllDate(date[0], date[1]).length
const totalPrices = (roomNumInt*unitPriceFloat*leaveDayNum).toFixed(2).toString()
this.setState({ totalPrice: totalPrices})
setFieldsValue({ totalPrice: totalPrices })
}

React 根据条件自动计算的更多相关文章

  1. &&运算符,三木运算符与React的条件渲染

    在使用react框架的时候中往往会遇到需要条件渲染的情形,这时候,许多人会设想采用if语句来实现,比如下面,当满足条件condition时,conditonRender渲染组件ComponentA,当 ...

  2. React中条件渲染

    17==> 条件渲染 state初始化一般写在构造器当中 CharShop.js如下 import React, { Component } from "react"; ex ...

  3. React 组件条件渲染的几种方式

    一.条件表达式渲染 (适用于两个组件二选一的渲染) render() { const isLoggedIn = this.state.isLoggedIn; return ( <div> ...

  4. 【译】在React中实现条件渲染的7种方法

    原文地址:https://scotch.io/tutorials/7-ways-to-implement-conditional-rendering-in-react-applications 借助R ...

  5. react初始

    一.一些基础概念 1.框架:基于整个项目的 2.库:在某个模块中单独使用,轻量级的 在vue中,DOM的操作时DOM指令调用js 在react中,所有的DOM 渲染都是由JS完成的 组件基于视图 模块 ...

  6. react 教程—核心概念

    react 核心概念  : https://react.docschina.org/docs/getting-started.html(官网) 或  https://www.w3cschool.cn/ ...

  7. react第三方库

    作者:慕课网链接:https://www.zhihu.com/question/59073695/answer/1071631250来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...

  8. 写react项目需要注意的

    key应该是稳定的,且唯一的,尽量不要用索引作为key 都知道React组件渲染列表时需要为每个列表元素分配一个在列表中独一无二的key,key可以在DOM中的某些元素被增加或删除视乎帮助React识 ...

  9. react初探(一)之JSX、状态(state)管理、条件渲染、事件处理

    前言: 最近收到组长通知我们项目组后面新开的项目准备统一技术栈为react,目前我的情况是三大框架只会angular和Vue.在实际项目中只使用过一次angular5,其余项目都是使用Vue写的.写篇 ...

随机推荐

  1. zabbix3.4配置第三方邮件报警

    废话不多说,直接进入主题. 1.安装mailx [root@localhost ~]#yum install malix -y                        #yum安装malix [ ...

  2. 3. 上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? (提示:搜索一下Microsoft TFS、GitHub、Trac、Bugzilla、Rationale,Apple XCode),请用一个实际的源代码管理工具来建立源代码仓库,并签入/签出代码。

    上网调查一下目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点? ---------------答题者:徐潇瑞 (1)Microsoft TFS的优缺点: 优点:是对敏捷,msf,c ...

  3. 在ISTIO中让GRAFANA跑起来

    比较轻车熟路了. 这个GRAFANA内,已集成了ISTIO常见的DASHBOARD了. 一,映射本地端口 kubectl port-forward -n istio-system $(kubectl ...

  4. 第02节-BLE协议各层的形象化理解

    本篇博客根据韦大仙视频,整理所得. 先上框图: ATT层 从ATT开始看,在上篇博客讲的医院结构里面有个检验室,检验室可以得到各项结果,但是它并不知道这些结果代表什么含义.类比的在BLE协议栈里面,A ...

  5. LCD裸板编程_框架

    lcd程序框架: 为了让程序更好的扩展,介绍面向对象编程: 比如抽象出lcd_3.5和lcd_4.3的共同点: 当我想使用3.5寸的lcd时,只需让lo指向lcd_3.5_opr即可.同样,当我想使用 ...

  6. 使用SpringBoot编写Restful风格接口

    一.简介    Restful是一种对url进行规范的编码风格,通常一个网址对应一个资源,访问形式类似http://xxx.com/xx/{id}/{id}. 举个栗子,当我们在某购物网站上买手机时会 ...

  7. 【java】定时任务停止时间设置

    我的需求:每天9点至20点运行 解决办法:@Scheduled(cron = "0 * 9,10,11,12,13,14,15,16,17,18,19 * * ?") 解释:  逗 ...

  8. spring学习3

    spring整合JDBC spring提供了很多模板整合Dao技术 spring中提供了一个可以操作数据库的对象.对象封装了jdbc技术. JDBCTemplate => JDBC模板对象    ...

  9. NOIP2019翻车前写(and 抄)过的代码

    咕咕咕.按上传时间升序排列. //树的重心 void dfs(int x) { v[x]=1; size[x]=1; int max_part=0; for(int i=hed[x];i;i=nxt[ ...

  10. 【线段树】【P5522】[yLOI2019] 棠梨煎雪

    C [yLOI2019] 棠梨煎雪 Background 岁岁花藻檐下共将棠梨煎雪 自总角至你我某日辗转天边 天淡天青 宿雨沾襟 一年一会信笺却只见寥寥数言 --银临<棠梨煎雪> Desc ...