整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

「React组件封装」「实例」文件选择按钮组件封装

「React组件封装」「实例」文件选择按钮组件封装

件选择器是我们经常会使用到的,一般都是通过点击某个按钮然后选取文件。

所以封装一个文件选择按钮还是有必要的。

首先,这个按钮使用起来必须和普通按钮一模一样,否则就失去了封装的意义。

其次也要基本符合我[基础]中讲到的几点。

于是(注意在chrome中使用image/*会很慢):(基础版本)

import React, { PureComponent } from 'react';
import CSSModules from 'react-css-modules';
 
import Tools from '../../common_js/Tools'
 
import styles from './FileButton.css'
 
class FileButton extends PureComponent {
 constructor(props) {
 super(props);
 
 this.getFiles=this.getFiles.bind(this)
 this.onChange=this.onChange.bind(this)
 }
 
 getFiles() {
 let ans=[]
 let files=this.refs.fileLoader.files
 for (let i=0; i < files.length; i++) {
 ans.push(files[i])
 }
 return ans
 }
 
 onChange(e) {
 if (!Tools.isNone(this.props.onChange)) {
 this.props.onChange(this.getFiles())
 }
 this.refs.fileLoader.value=''
 }
 
 render() {
 let accept=this.props.accept
 if (Tools.isNone(accept)) {
 accept='image/*'
 if (Tools.isChrome()) {
 accept='image/jpeg,image/gif,image/png,image/bmp'
 }
 }
 return (
 <label className={this.props.className} style={this.props.style} >
 {this.props.children}
 {
 this.props.multiple==true ?
 <input styleName='input-area' ref='fileLoader' onChange={this.onChange} type="file" accept={accept} multiple />
 :
 <input styleName='input-area' ref='fileLoader' onChange={this.onChange} type="file" accept={accept} />
 }
 </label>
 );
 }
}
 
export default CSSModules(FileButton, styles);

input_area样式:

.input-area {
 width: 0px;
 height: 0px;
 position:absolute;
 clip:rect(0 0 0 0);
}

此外:(@material-ui中Button的封装版本)

Pasternack推出使用寿命达一百万次且频率范围宽至DC~46GHz的机电式开关

加州尔湾2015年9月15日电 /美通社/ -- 业界领先的射频、微波和毫米波产品制造商及供应商美国 Pasternack 公司推出了一大系列用于射频,微波及毫米波领域的多市场通用同轴封装机电式开关现货产品。这些新型机电式开关极其适用于军事通信、雷达、商业及军事航空、卫星通信、测试及仪器仪表、医疗器械等领域。

Pasternack通用机电式开关

上述最新机电式开关包含134种带连接器的设计型号,保证使用寿命均为一百万次。这些通用开关新产品扩充了 Pasternack 现有的两百万至一千万次使用寿命的高可靠性机电式继电器开关产品线,使得该公司拥有业内最大的射频开关现货产品库。此类射频继电器开关可搭配 SMA、N 型、TNC 以及2.92mm 等各种不同连接器,而且包括单刀双掷、双刀双掷、单刀四掷、单刀六掷、单刀十掷以及切换式等各种常用构型。此外,某些型号产品还具有闭锁致动器、故障安全致动器、指示灯、输入控制电压 (TTL) 控制、端接电阻、脉冲封锁以及热切换等额外功能。

上述通用开关新产品的工作频率范围为DC~46GHz,额定功率为10W~275W,隔离度高达80dB,开关速度为15ms~50ms,插入损耗低至0.2dB~0.6dB。此外,这些射频开关的所用材料及表面处理均符合现行美国军用标准。

“Pasternack 为设计人员提供了一个综合的通用机电式开关产品选型库。这些产品可应用于多种市场,具有各种常用构型,而且均具有达一百万次的保证使用寿命”,Pasternack 公司有源器件产品经理 Tim Galla 先生表示,“这些开关产品是对我们现有达一千万次寿命的高可靠性继电器开关产品线的完美补充。”

上述包含134种通用机电式开关的新产品系列已备货在库并可自今日随时出货。您可访问http://www.pasternack.com/pages/RF-Microwave-and-Millimeter-Wave-Products/general-purpose-electromechanical-rf-switches.html,了解这些新型机电式开关的信息。

可致电 400-007-3336 联系我们的中国经销商或拨打 Pasternack 中国电话 21-3655-8021,或莅临IME/2015 Pasternack 展台(展位#:B085,10月21日-23日,上海光大会展中心)与我们的技术专家面对面沟通。

于vue封装的Modal弹出层,包含html页面打开,提示,确认等常用diaog打开形式,引入js,css即可开箱使用,无需在页面上提前声明Modal,随用随生成,动态渲染挂接到页面,关闭后自动移除,方便快捷,并且支持页面大小,页面传参,页面回调函数等在开发中需要使用的功能

引入控件

1.引入vue.js

2.引入dist文件夹下的fastdialog.js和fastdialog.css文件,详情可查看test分支,为演示示例

使用控件

首先,页面初始化化vue需要用变量存一下

 var app1=new Vue({})

普通打开页面

 app1.$fastdialog.OpenDialog("111", "打开窗口", "newpage1.html", "600", "1200");

参数:dialog标识,页面标题名称,页面url地址,页面高度,页面宽度

百分比打开页面

app1.$fastdialog.OpenDialog("111", "打开窗口", "newpage1.html", "70", "80",null,null,"%");

注:第8个参数为宽高的单位,不传默认px

打开的页面关闭后,主页面触发回调函数

app1.$fastdialog.OpenDialog("222", "关闭窗口有回调函数", "newpage1.html", "600", "1200", AfterClose);

打开的页面关闭后,主页面触发回调函数,回调函数包含关闭页面传递的返回值

 app1.$fastdialog.OpenDialog("333", "回掉函数包含返回值", "newpage1.html", "600", "1200", AfterCloseWithReturn);
 function AfterCloseWithReturn(ReturnValue) {
 alert("page1回传的参数:"+ReturnValue);
 }

打开页面并传递参数

OpenDialog("444", "有回调函数并传参", "newpage1.html", "600", "1200", AfterCloseWithReturn, "125sds");

打开页面获取参数

var params=app1.$fastdialog.GetParams();
 if (params && params !="undefined") {
 alert("打开页面接收的参数:" + params);
}

关闭打开的页面

app1.$fastdialog.CloseDialog();

关闭打开的页面并向主页面传递返回值,配合3使用

app1.$fastdialog.CloseDialog("page1回传222222");

在顶层窗口打开页面,一般用于iframe中

app1.$fastdialog.OpenTopDialog("777777", "有回调函数并传参", "newpage2.html", "500", "1000", AfterCloseWithReturn, "page1-page2传参");

关闭顶层页面

app1.$fastdialog.CloseDialog("page2回传111111","page3");

注:CloseDialog方法在关闭OpenDialog的页面,无需传参,或者传返回值,关闭OpenTopDialog的页面时必须传入两个参数,ReturnValue和打开的dialog的id标识,无返回值传null,如果一个页面同时需要被 OpenDialog和OpenTopDialog打开,两个参数必传

打开普通提示窗

 app1.$fastdialog.OpenAlert("提示", "请在规定期限内处理完成!");

关闭提示窗关闭后触发回调事件

app1.$fastdialog.OpenAlert("提示", "请在规定期限内处理完成!",AfterClose);

打开成功提示窗

app1.$fastdialog.OpenSuccess("提示", "请在规定期限内处理完成!");

打开警告提示窗

 app1.$fastdialog.OpenWaring("提示", "请在规定期限内处理完成!",null,"知道了");

打开失败提示窗

 app1.$fastdialog.OpenFail("提示", "请在规定期限内处理完成!");

打开确认提示窗

app1.$fastdialog.OpenConfirm("确认提示", "是否删除当前数据", function () {
 app1.$fastdialog.OpenSuccess("提示", "删除成功");
 });
 app1.$fastdialog.OpenConfirm("确认提示", "是否删除当前数据", function () {
 }, "确认删除", "取消操作");

注:

1.alert类提示窗支持4个参数 标题,提示信息,回调函数,关闭按钮文字

3.confirm提示窗支持5个参数 标题,提示信息,确认按钮回调函数,自定义确认按钮文字,自定义取消按钮文字

一些说明: 下载代码的同学查看例子时需要部署一下,因为Modal中包含了请求模板的http操作

项目地址

https://gitee.com/grassprogramming/FastDialog-Vue

示例:http://grassprogramming.gitee.io/fastdialog-vue/example.html