
Research
PyPI Package Disguised as Instagram Growth Tool Harvests User Credentials
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
react-native-lib-cus-com
Advanced tools
react-native 自定义辅助组件库,完美的网路请求,带加载条,可上传、下载文件,等等多种ui,可自定义删除;可节省应用级软件的开发时间
react-native 自定义辅助组件库,完美适配各种机型和屏幕大小;
完美的网路请求,带加载条,可上传、下载文件,支持视频播放,二维码条形码扫描,
图片选择、剪辑、查看大图,本地存储,数据库操作,页面导航,截屏和截UI图,
水印图片,打开office类文件;等等多种ui,可自定义删除;可节省应用级软件的开发时间
完美的页面导航跳转返回;
每一个Tab页面组都有自己的返回逻辑,互不影响;
杜绝了传统的记住历史页面进行的返回;
避免从一个Tab页面组跳入到另一个Tab页面组,返回时返回到跳入之前的Tab页面组;
具体使用请看下边的组件BaseComponent
npm i --save react-native-lib-cus-com
1.所有源码中的方法有注释,可自行查看;
2.各组件的详细调用方法,可进入相应的组件文件查看,里面所有的方法/函数都有注释;
3.以下“使用”的说明只有简单的说明(且都不写参数,直接复制使用,可能会报错),具体说明,请参照“注意”第2点
npm i --save react-native-view-shot 截屏和截UI图
npm i --save react-native-sqlite-storage 数据库操作
npm i --save react-native-fs 文件操作
npm i --save react-native-device-info 设备信息获取
npm i --save react-native-doc-viewer 打开文件
npm i --save jpush-react-native 极光推送
npm i --save react-native-update-js 热更新,自定义服务器
* react-native-update 发布热更新报错 将node_modules\react-native-update\local-cli\lib\bundle.js
* 的439行种的metro-bundler改成metro可成功运行!
* 报错版本0.52+(0.52以上版本报错)
npm i --save react-native-update 热更新
npm i --save react-native-image-marker 水印
npm i --save react-native-image-crop-picker 图片操作
npm i --save react-native-image-picker 视频操作
npm i --save react-native-picker 选择框组件
npm i --save react-native-spinkit 加载图
npm i --save react-native-talkingdata talkingdata统计组件
本库自带react-navigation(1.5.11),若想使用最新版则按“选择安装依赖的初始化”初始化
npm i --save react-navigation 页面导航
npm i --save react-native-orientation 屏幕方向操作
* react-native-smart-barcode 二维码库中将react的PropTypes换成
* import PropTypes from 'prop-types';
* PropTypes已经从react中单独提取出来
* android 需要修改 RCTCapturePackage中的List的继承去掉
npm i --save react-native-smart-barcode 二维码扫描
npm i --save react-native-linear-gradient 渐变
npm i --save react-native-svg svg画图工具
npm i --save victory-native victory图表
npm i --save react-native-zip-archive 解压缩组件
import {ComponentConstructor} from "react-native-lib-cus-com";
ComponentConstructor({
react_native_root_toast:require("react-native-root-toast"),
react_native_fs:require("react-native-fs")
});
//就是将组件名中的"-"换成"_",传入ComponentConstructor(组件构造器)即可。
StyleSheetAdapt.create();//创建样式表单
StyleSheetAdapt.getStyle();//得到样式属性的json对象
StyleSheetAdapt.designSize = {width:768,height:1024};// 设置页面设计大小 可不设置 默认设计大小12寸平板电脑({width:768,height:1024})
//数字后面可加以下字符 若加字符,加数字后面
//'dw' 获取相对当前屏幕的设计宽比的宽
//'w' 获取相对当前屏幕宽的宽
//'n' 不进行屏幕比缩放
//'dh' 获取相对当前屏幕的设计高比的宽
//'h' 获取相对当前屏幕高比的宽
//如:
const styles = StyleSheetAdapt.create({
testStyle2:{
width:'0.1w',//屏幕宽的10分之1
height:'0.1h',//屏幕高的10分之1
},
testStyle3:{
width:'100dw',//按设计大小宽比适配 会随屏幕调整布局
height:'100dw',//按设计大小宽比适配
},
testStyle:{
transform:[
{rotateX:'180deg'}
],
},
});//创建样式表单
import {StyleSheetAdapt} from "react-native-lib-cus-com";
import React, {Component} from 'react';
import {View} from 'react-native';
/**
设置页面设计大小(只需设置一次) 可不设置
默认设计大小12寸平板电脑({width:768,height:1024})
**/
StyleSheetAdapt.designSize = {width:768,height:1024};
const styles = StyleSheetAdapt.create({
testStyle2:{
width:100,
height:200,
},
testStyle:{
transform:[
{rotateX:'180deg'}
],
},
});//创建样式表单
//StyleSheetAdapt.styleJsonAdaptConvert();//样式属性json中的值适配
export default class Test extends BaseComponent<Props> {
constructor(props) {
super(props);
}
alert(){
//与react-native 中的Alert用法一致
Alert.alert();
}
componentWillMount(){
}
componentDidMount() {
}
render() {
const {resultEstimateData,noticesData,resultFinishProgress,
tripListData,customerObj,isNews,pictures,path,dataSize,picture} = this.state;
return (
<ViewTitle>
<View style={styles.testStyle}></View>
<View style={StyleSheetAdapt.testStyle2}></View>
<View style={StyleSheetAdapt.styleJsonAdaptConvert({
width:100,
height:200,
})}></View>
</ViewTitle>
);
}
}
import {Http} from "react-native-lib-cus-com";
Http.post();//基于 fetch 封装的 POST请求
Http.get();//基于 fetch 封装的 Get请求
Http.requestAjax();//基于 ajax 封装的 网络请求
Http.urlFile = "";//上传文件 接口
Http.fileField = "";//文件上传包含文件的字段,可不传
Http.upLoadFileToService();//上传文件 react-native-fs
Http.downloadFile();//下载文件 react-native-fs
import {Tools} from "react-native-lib-cus-com";
Tools.getStyle();//得到样式属性的json对象
Tools.replaceStr();//替换指定位置的字符串 字符串替换处理操作
Tools.getLocation();//获取地理位置
Tools.toast();//toast消息提示
Tools.openDoc();//打开文档(文件)
Tools.pickMonth();//选择年月(弹出年月ui选择框)
Tools.timeFormatConvert();//时间格式转化
Tools.isNumber();//判断是否是数字
Tools.getTimeByRank();//获取本周周一和周日的时间戳 对象;获取本月的月初的时间戳和月底的时间戳 对象
Tools.getDistanceByGps();//计算两点经纬度的距离
Tools.captureViewScreen();//截屏 截取UI的图片
Tools.toSpecifiedPageInPush = (result)=>{};//打开推送回调函数(如:跳转入指定页面);直接赋值方法
import {Alert} from "react-native-lib-cus-com";
Alert.alert();//显示对话框
Alert.hide();//关闭对话框
import {CaptureImage} from "react-native-lib-cus-com";
CaptureImage.captureViewScreen();//截屏 截取UI的图片
import {DbMgr} from "react-native-lib-cus-com";
DbMgr.DB_TABLE_LIST = [];//创建表列表 此必须先调用
DbMgr.executeSql();//执行sql
还有很多方法,请查看文件里的注释
/**
* HotUpdateCus 热更新,提供热更新各种方法
* metaInfo(元信息):{
updateList:[],//更新appID集合(appID集合)//不传字段,则所有app将收到更新信息,传了空数组则所有app不会收到更新信息
//如:updateList:[12,123,"vb"];
updateNoList:[],//不更新appID集合(appID集合)//updateNoList中含的appID的app将不会收到更新信息;不传或传空数组则所有app更新
//如:updateNoList:[12,123,"vb"];
code:777,//777、立刻更新;888、立刻强制更新;999、立刻静默更新
reboot:555,//666、强制使用更新;555、用户决定是否使用更新;333、下次启用更新 默认是555
finishInfo:'',//更新完成时的提示信息reboot=333时有效
}
如:{"updateList":[]}
* **/
import {HotUpdateCus} from "react-native-lib-cus-com";
HotUpdateCus.host = null;//热更新配置文件地址或接口,//get请求
HotUpdateCus.tag = null;//热更新的标志 与后台配置一致
HotUpdateCus.appID = null;//给每个app的唯一标识,可以是任何数据,必须传入,用于判断是否需要更新,与updateList、updateNoList配套使用
//如:HotUpdateCus.appID = 12
HotUpdateCus.updateFirst = true;//app第一次启动是否强制更新,默认true更新
HotUpdateCus.update.execute = true;//是否启动检查更新
HotUpdateCus.checkUpdate();//检查是否有更新(检查一次)
HotUpdateCus.checkUpdateLoop();//持续检查是否有更新
后台json配置:
{
"ios-lx_yyt-2.0.7":{//这key是这样设置,ios:"ios-" + HotUpdate.tag + "-" + packageVersion = "lx_yyt-2.0.7";android:"android-" + HotUpdate.tag + "-" + packageVersion = "lx_yyt-2.0.7";
"tag":"lx_yyt",//app设置的标识 ,HotUpdate.tag="lx_yyt"设置的一致
"packageVersion":"2.0.7",//app的静态版本(硬版本)号,即编译时设置的版本号,此发生变化就会去下载新的静态版本(硬版本)
"downloadUrl":"https://itunes.apple.com/cn/app/id1438062830?l=en&mt=8",//静态版本(硬版本)下载地址
"description":"yyy",//静态版本(硬版本)描述
"metaInfoPkg":{//元信息可在里面自定义一些数据,app的静态版本(硬版本),更新时回传
"rnUpdate":true//此字段是我测试项目自定义的,是否开启react-native-update热更新,默认false关闭,使用自定义热更新;true开启,使用react-native-update热更新,只能选择一种
},
"publishJS":[//发布的js所有版本,默认第一个是最新发布的的js版本,可任选一个更新
{
"description": "asdfsa",//js描述
"version": "2.0.140",//js的版本号
"metaInfo":{//元信息可在里面自定义一些数据,js的版本,更新时回传
},
"build": 12,// 构建值(数字),只可增大,不可重复,用于比对版本是否升级
"updateUrl": "http://yyt.yyy.com:8081/app_config/lx_yyt_app.zip" //js包
}
]
}
}
安装、配置好react-native-update后
/**
发布热更新报错 将node_modules\react-native-update\local-cli\lib\bundle.js
的439行种的metro-bundler改成metro可成功运行!
报错版本0.52+(0.52以上版本报错)
**/
/**
* HotUpdate 热更新,提供热更新各种方法
* metaInfo(元信息):{
updateList:[],//更新appID集合(appID集合)//不传字段,则所有app将收到更新信息,传了空数组则所有app不会收到更新信息
updateNoList:[],//不更新appID集合(appID集合)//updateNoList中含的appID的app将不会收到更新信息;不传或传空数组则所有app更新
code:777,//777、立刻更新;888、立刻强制更新;999、立刻静默更新
reboot:555,//666、强制使用更新;555、用户决定是否使用更新;333、下次启用更新 默认是555
finishInfo:'',//更新完成时的提示信息reboot=333时有效
}
发布时,因react-native-update只接受字符串,所以元信息应是json的字符串,
如:{"updateList":[]}
* **/
import {HotUpdate} from "react-native-lib-cus-com";
/**
appkey 可采用以下方式获取:
import _updateConfig from '项目名/update';
const {appKey} = _updateConfig[Platform.OS];
**/
HotUpdate.appKey = null;//react-native-update的key
HotUpdate.appID = null;//给每个app的唯一标识,可以是任何数据,必须传入,用于判断是否需要更新,与updateList、updateNoList配套使用
HotUpdate.updateFirst = true;//app第一次启动是否强制更新,默认true更新
HotUpdate.update.execute = true;//是否启动检查更新
HotUpdate.checkUpdate();//检查是否有更新 (检查一次)
HotUpdate.checkUpdateLoop();//持续检查是否有更新
这些设置完后即可,提示会根据元信息的情况提示
import {FileDirMgr} from "react-native-lib-cus-com";
FileDirMgr.copyDir();//复制目录到指定目录
FileDirMgr.readDir();//读取目录下的所有文件
FileDirMgr.deleteDirOrFile();//删除目录或文件
import {IamgeWaterMark} from "react-native-lib-cus-com";
IamgeWaterMark.markText();//设置水印文本
import {ImageViewApi} from "react-native-lib-cus-com";
ImageViewApi.show();//显示大图
ImageViewApi.hide();//隐藏大图
本库未直接导出,若想使用,使用自行导出;
需要安装:
npm i --save jcore-react-native
npm i --save jpush-react-native
import {LocalStorage} from "react-native-lib-cus-com";
LocalStorage.save();//使用key来保存单个数据(key-only)。这些数据一般是全局独有的,需要谨慎单独处理的数据
LocalStorage.get();//读取单个数据
LocalStorage.saves();//使用key来保存批量数据(key-only)。这些数据一般是全局独有的,需要谨慎单独处理的数据
LocalStorage.gets();//读取批量数据
import {Media} from "react-native-lib-cus-com";
Media.pickImage();//选择图片 react-native-image-crop-picker
Media.takeImage();//拍照 react-native-image-crop-picker
Media.pickVideo();//选择视频 react-native-image-crop-picker
Media.takeVideo();//拍摄视频 react-native-image-picker
import {MenuBottomApi} from "react-native-lib-cus-com";
MenuBottomApi.show();//显示底部菜单
MenuBottomApi.hide();//隐藏底部菜单
import {PickerCustome} from "react-native-lib-cus-com";
PickerCustome.pick();//选择框 底部
PickerCustome.pickMonth();//选择年月
import {ProgressApi} from "react-native-lib-cus-com";
ProgressApi.show();//显示加载指示器
ProgressApi.hide();//隐藏菊花加载指示器
import {ProgressPerApi} from "react-native-lib-cus-com";
ProgressPerApi.show();//显示进度条
ProgressPerApi.hide();//隐藏进度条
import {ProgressBarApi} from "react-native-lib-cus-com";
ProgressBarApi.show();//显示进度条
ProgressBarApi.hide();//隐藏进度条
本库未直接导出,若想使用,使用自行导出;
需要安装:
npm i --save react-native-talkingdata
import {Theme} from "react-native-lib-cus-com";
主题配色,宽高,弧度,在这个库中的一些ui使用到这里的默认配置,特别是样式
this.goPage();//跳转页面
BaseComponent.goPage();//跳转页面
this.goBack();//返回已进入的页面
BaseComponent.goBack();//返回已进入的页面
this.setParams();//设置参数改变导航栏
BaseComponent.setParams();//设置参数改变导航栏
this.getPageParams();//获取页面跳转传递的参数
BaseComponent.getPageParams();//获取页面跳转传递的参数
/**
* 导航栏按钮设置
* headerLeft://导航栏左边按钮可传 bool(false:隐藏左边默认UI;true:显示左边默认UI)、图片(url)、UI
* headerRight://导航栏右边按钮可传 bool(false:隐藏左边默认UI;true:显示左边默认UI)、图片(url)、UI
* headerLeftHandle://函数方法 可在左边按钮点击返回之前执行
* headerRightHandle://函数方法 右边按钮点击执行
* **/
//还有很多react-navigation支持的参数都可通过此方法传递
this.setParams({
headerLeft:function() {},//导航栏左边按钮可传 bool(false:隐藏左边默认UI;true:显示左边默认UI)、图片(url)、UI
headerRight:function (){},//导航栏右边按钮可传 bool(false:隐藏左边默认UI;true:显示左边默认UI)、图片(url)、UI
headerLeftHandle:function(){},//函数方法 可在左边按钮点击返回之前执行
headerRightHandle:function() {}//函数方法 右边按钮点击执行
});//设置参数改变导航栏
//继承BaseComponent,将有两个生命周期回调方法
/**
* 进入页面时回调此方法
* @param params json,//第一个参数,页面传递参数
* @param action object,第二个参数,页面传递动作
* @param routeName string,第三个参数,页面名
* **/
componentWillEnter(params,action,routeName);//进入页面时回调此方法
componentWillExit();//退出页面时回调此方法
import React, {Component} from 'react';
import {
Text,
} from 'react-native'
import {
StyleSheetAdapt,
ViewTitle,
BaseComponent,
BarcodeView,
Tools,
} from "react-native-lib-cus-com";
export default class Test extends BaseComponent<Props> {
constructor(props) {
super(props);
let param = Tools.userConfig.userCutAccount && Tools.userConfig.userCutAccount.length > 0
? {
headerLeft:<ImageChange icon={require("images/role.png")}
onPressIn={()=>PageSearchRole.show(this)}
style={styles.hLeft}/>
}
: {
headerLeft:false
};
this.setParams(param);
}
/**
* 进入页面时回调此方法
* @param params json,//第一个参数,页面传递参数
* @param action object,第二个参数,页面传递动作
* @param routeName string,第三个参数,页面名
* **/
componentWillEnter(params,action,routeName){
}//进入页面时回调此方法
componentWillExit(){
}//退出页面时回调此方法
render() {
return (
<ViewTitle>
<BarcodeView ref={c=>this.barcodeView}
style={styles.testStyle}/>
<Text onPress={()=>this.barcodeView.startScan()}>
开始扫码
</Text>
</ViewTitle>
);
}
}
const styles = StyleSheetAdapt.create({
testStyle2:{
width:100,
height:200,
},
testStyle:{
transform:[
{rotateX:'180deg'}
],
},
});
BaseComponent.setScreenOrientations();//设置屏幕 静态
this.setScreenOrientations();//设置屏幕 动态
BaseComponent.getOrientation();//获取屏幕方向 静态
this.getOrientation();//获取屏幕方向 动态
BaseComponent.addOrientationListener();//监听屏幕方向变化
this.goPage();//跳转页面
this.goBack();//返回已进入的页面
this.setParams();//设置参数改变导航栏
this.getPageParams();//获取页面跳转传递的参数
import {ViewTitle} from "react-native-lib-cus-com";
import {VideoView} from "react-native-lib-cus-com";
import {VideoList} from "react-native-lib-cus-com";
import {WebViewCus} from "react-native-lib-cus-com";
import {DatePicker} from "react-native-lib-cus-com";
import {ButtonTime} from "react-native-lib-cus-com";
import {ViewCtrl} from "react-native-lib-cus-com";
import {DropdownBox} from "react-native-lib-cus-com";
import {PickDropdown} from "react-native-lib-cus-com";
import {PickDropdownMonth} from "react-native-lib-cus-com";
import {Progress} from "react-native-lib-cus-com";
import {ProgressPer} from "react-native-lib-cus-com";
import {Question} from "react-native-lib-cus-com";
import {QuestionList} from "react-native-lib-cus-com";
import {FlatListView} from "react-native-lib-cus-com";
import {ImageBg} from "react-native-lib-cus-com";
import {ButtonChange} from "react-native-lib-cus-com";
import {ImageView} from "react-native-lib-cus-com";
import {ImageList} from "react-native-lib-cus-com";
import React, {Component} from 'react';
import {
Text,
} from 'react-native'
import {
StyleSheetAdapt,
ViewTitle,
BaseComponent,
BarcodeView,
} from "react-native-lib-cus-com";
type Props = {};
export default class Test extends BaseComponent<Props> {
constructor(props) {
super(props);
}
render() {
return (
<ViewTitle>
<BarcodeView ref={c=>this.barcodeView}
style={styles.testStyle}/>
<Text onPress={()=>this.barcodeView.startScan()}>
开始扫码
</Text>
</ViewTitle>
);
}
}
const styles = StyleSheetAdapt.create({
testStyle2:{
width:100,
height:200,
},
testStyle:{
transform:[
{rotateX:'180deg'}
],
},
});
import {MenuBottom} from "react-native-lib-cus-com";
<MenuBottom ref={c=>this.menuBottom=c}
btnList={["btn1","btn2"]}
onPress={item=>{}}
/>
this.menuBottom.show(true);
import {SlideMenuDrawer} from "react-native-lib-cus-com";
import {SwiperImage} from "react-native-lib-cus-com";
import {SwiperNotice} from "react-native-lib-cus-com";
import {TextChange} from "react-native-lib-cus-com";
import {TextDoubleIcon} from "react-native-lib-cus-com";
import {TextInputIcon} from "react-native-lib-cus-com";
import {TextInputLabel} from "react-native-lib-cus-com";
import {TextIcon} from "react-native-lib-cus-com";
import {TextIconBg} from "react-native-lib-cus-com";
import {TitleRow} from "react-native-lib-cus-com";
import {TitleBlock} from "react-native-lib-cus-com";
import {TitleBlockList} from "react-native-lib-cus-com";
import {ModalTextInput} from "react-native-lib-cus-com";
import {ModalTextInputS} from "react-native-lib-cus-com";
import {ScrollSelectOptions} from "react-native-lib-cus-com";
import {ItemRowTitle} from "react-native-lib-cus-com";
import {ScrollViewRowList} from "react-native-lib-cus-com";
import {ItemRowSwitch} from "react-native-lib-cus-com";
import {ItemRowTableSwitch} from "react-native-lib-cus-com";
import {ImageBrower} from "react-native-lib-cus-com";
<Charts.BarHorizontal />
<Charts.BarHorizontal2 /> <Charts.BarHorizontal3 /> <Charts.BarCircleChart />
<Charts.BarCharts />
<Charts.Chart /> 基于react-native-echarts-cus
import {Charts} from "react-native-lib-cus-com";
<Charts.BarHorizontal /> //水平渐变柱状图 双层颜色变化 无文字
<Charts.BarHorizontal2 /> //水平渐变柱状图2 左右有文字提示 中间相对比变化的进度对比条
<Charts.BarHorizontal3 /> //水平渐变柱状图3 可有多条BarHorizontal2
<Charts.BarCircleGradient /> //圆形渐变图
<Charts.BarCircleChart /> //圆形加载图 4圆 中间有显示文本(Native实现)
<Charts.BarCharts /> //柱状图(Native实现)
<Charts.Chart /> //echarts图表 图形类型:柱状图,饼图,饼图;
import {ImageViewWatermark} from "react-native-lib-cus-com";
ImageViewWatermark.show();//显示图片,有参数
或
<ImageViewWatermark ref={c=>this.waterMark=c} />
this.waterMark.show();//显示图片,有参数
import {GuideImageHint} from "react-native-lib-cus-com";
import {ItemRowBuyCar} from "react-native-lib-cus-com";
import {ItemRowGoods} from "react-native-lib-cus-com";
import {ItemRowGoodsPromotion} from "react-native-lib-cus-com";
import {ItemRowGuideApplyType} from "react-native-lib-cus-com";
import {ItemRowTripApply} from "react-native-lib-cus-com";
import {ItemRowGuideTripApply} from "react-native-lib-cus-com";
import {ItemRowTripTask} from "react-native-lib-cus-com";
import {ItemRowReciew} from "react-native-lib-cus-com";
import {BarHorizontalTitleSection} from "react-native-lib-cus-com";
import {ChartCircleProgress} from "react-native-lib-cus-com";
import {ChartCircleProgressList} from "react-native-lib-cus-com";
import {ResultProgressBlock} from "react-native-lib-cus-com";
import {SearchDDDIpt} from "react-native-lib-cus-com";
import {SearchDropIpt} from "react-native-lib-cus-com";
import {SearchIpt} from "react-native-lib-cus-com";
import {TitleBlockTarget} from "react-native-lib-cus-com";
import {TitleBlockTargetArea} from "react-native-lib-cus-com";
欢迎提问交流;若有bug,请添加bug截图或代码片段,以便更快更好的解决问题。
欢迎大家一起交流
FAQs
react-native 自定义辅助组件库,完美的网路请求,带加载条,可上传、下载文件,等等多种ui,可自定义删除;可节省应用级软件的开发时间
The npm package react-native-lib-cus-com receives a total of 26 weekly downloads. As such, react-native-lib-cus-com popularity was classified as not popular.
We found that react-native-lib-cus-com demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.
Security News
Research
Socket uncovered two npm packages that register hidden HTTP endpoints to delete all files on command.