1.{} 有外层的数据时 转换成 数组
getObjValue = (obj) => {
let arr = [];
for (let i in obj) {
arr.push(obj[i])
}
return arr;
}
2.把数组中的值放在字段中
let name =[];
arr&&arr.map((item)=>{
name.push(item.NAME)
})
// 把某个值拿出来放在单独的数组中
name.forEach((data) => {
d = data+','+ d ;
// 把所有的值拼成一个字段
3.列表页自动刷新
this.data = this.props.navigation.state.params.data ? this.props.navigation.state.params.data : {};
_onRefresh= () => {
this.data.addRefresh && this.data.addRefresh()
this.getHSEDetailsData && this.getHSEDetailsData()
}
data:{ addRefresh: this._onRefresh},
4.获取系统页面的高度和宽度
const {width, height} = Dimensions.get('window');
5.使用Git下载指定分支命令
git clone -b 分支名仓库地址
git branch //查看分支
git branch newBranch //新建分支
git checkout newBranch // 转分支
git checkout -b test origin/test //新建并转分支
git branch -d newBranch //删除分支
git reset --hard 364ac1a9ef55f31298ca8bbe02f82695f9074f66 (HEAD^)
git push -f origin V3.3.6 //强制回退到某版本
6.页面跳转
const {navigation} = this.props;
this.props.navigation.navigate('ProjectSupervision_detaill', {data:{data: data,addRefresh: this._onRefresh}})
7.返回按钮设置
this.onBackAndroid = this.onBackAndroid.bind(this)
onBackAndroid = () => {
Modal.alert('', '退出此次编辑?', [
{text: '取消', onPress: () => {}, style: 'cancel'},
{text: '确定', onPress: () => {this.props.navigation.goBack() }
},
]);
return true
}
componentDidMount() {
if (Platform.OS === 'android') {
BackAndroid.addEventListener('hardwareBackPress', this.onBackAndroid);
}
}
componentWillUnmount() {
if (Platform.OS === 'android') {
BackAndroid.removeEventListener('hardwareBackPress', this.onBackAndroid);
}
}
8.判断字段是否为空
judgeNone=()=>{
let arr = [
{word:this.state.PROJECT_ID__NAME,message:'工程名称'},
{word:this.state.PENALTY_UNIT,message:'出具罚单单位'},
];
return AppUtils.wordIsNone(arr);
}
function wordIsNone(array) {
for(var i =0;i<array.length;i++){
let item = array[i];
if(item.word===""){
debugger
Toast.info(item.message+' 不能为空',1,()=>{})
return false;
}
}
return true;
}
9.下拉框选择
showTYPE(){
let strArr = [];
let strArrID = [];
this.state.TYPES&&this.state.TYPES.map((item)=>{
strArr.push(item.TYPE__NAME)
strArrID.push(item._PK_)
})
strArr.push('取消')
ActionSheet.showActionSheetWithOptions(
{
title: '请选择处罚类型',
message: '',
options: strArr,
cancelButtonIndex: strArr.length,
destructiveButtonIndex: strArr.length - 1,
},
(buttonIndex: any) => {
if (buttonIndex < strArr.length - 1) {
this.setState({
TYPE__NAME: strArr[buttonIndex],
TYPE: strArrID[buttonIndex],
PENALTY_AMOUNT: '',
PUNISH_CONTENT_NAME: ''
});
}
},
);
}
10.State里data的某个值赋值
let d = {...this.state.data}
d.WEATHER_DESC_NAME = titleArr[buttonIndex];
d.WEATHER_DESC = IDArr[buttonIndex];
this.setState({data: d});
11.页面空标题
static navigationOptions = ({navigation, screenProps}) => ({
header: null
});
12.获取系统当前日期
TimeUtil.getFormatDate(new Date()), //检查日期
13.时间戳
//输入的时间格式为yyyy-MM-dd hh:mm:ss
function convertDateFromString(dateString) {
if (dateString) {
var arr1 = dateString.split(" ");
var sdate = arr1[0].split('-');
var hdate = arr1[1].split(':');
var date = new Date(sdate[0], sdate[1]-1, sdate[2],hdate[0],hdate[1],[2]);
return date;
}
}
14.iPhone 11刘海屏高度不适配的问题
height:(Platform.OS == 'ios'?234:190)
15.bind()方法创建一个新的函数, 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。
16.node清缓存
yarn start --reset-cache
17.打包报错
1."verifyReleaseResources"2."Aapt2Exception"
Execution failed for task':app:prepareSmartPropertyReactNativeSplashScreenUnspecifiedLibrary'.> Could not expand ZIP 'F:\ProjectCode\smartproperty\SmartProperty\node_modules\react-native-splash-screen\android\build\outputs\aar\react-native-splash-screen-release.aar'.
解决方法:
cd android、、、 gradlew clean 、、、cd .. 、、、react-native run-android
console.ignoredYellowBox = ['Warning: BackAndroid is deprecated. Please use BackHandler instead.','source.uri should not be an empty string','Invalid props.style key'];
console.disableYellowBox = true // 关闭全部黄色警告
18.字段截取
nameShort = nameShort.substring(0,length)
19.字段拼接
photoUrls.splice(index, 1);
20.出现用户名密码的代码行:
git config --system --unset credential.helper
21.转化为数字类型
parseInt()
22.图片自适应
resizeMode="contain"
23.Blacklist的报错处理
/node_modules[\/\\]react[\/\\]dist[\/\\].*/,
24.Spring-boot get格式传参
spring-boot格式的传参
static async getDataComonForGet(url,_body) {
//this.generalHeaders.map['ACCESS_TOKEN'] = global.userInfo.USER_TOKEN;
if (_body) {
let paramsArray = [];
//拼接参数
Object.keys(_body).forEach(key => paramsArray.push(key + '=' + _body[key]))
if (url.search(/\?/) === -1) {
url += '?' + paramsArray.join('&')
} else {
url += '&' + paramsArray.join('&')
}
}
let response = await fetch(url, {
method: 'GET',
headers: this.generalHeaders,
});
let jsonData = await response.json();
console.log('result','getDataComonForGet--'+JSON.stringify(jsonData))
let result = checkCdpStatus(jsonData, url, _body);
return result;
}
25.字段截取
let codeend = code.substr(1, code.length);
26.数组截取
gridArr.slice(0,4)
27.出现用户名密码的代码行:
git config --system --unset credential.helper
console.log("jsonData",JSON.stringify(jsonData));
const {width, height} = Dimensions.get('window');
29.判断输入只能是数字
if (this.isNum) input = text.replace(/[^\d]+/, '')
30.监听
addEmitter = ()=>{
//注册监听:
this.deEmitter = DeviceEventEmitter.addListener('YQTB_ListRefresh',(flag)=>{
this._onRefresh()
});
}this.deEmitter.remove();
this.addEmitter();
DeviceEventEmitter.emit('YQTB_ListRefresh','');
31.拍照
//直接拍照,不选择相册launchCamera
ImagePicker.showImagePicker(options, (response) => {
32.角标
<Badge text={item2.todoNum} color={'blue'}>
33.Redux的三大定律:1.单一数据源store。2.state是只读的,改变state的唯一方法就是触发action,action其实就是一个普通的javascript对象。3.使用纯函数执行修改,这里所说的纯函数就是Redux中reducer。
34.
const resetAction = StackActions.reset({
index: 0,
actions: [
NavigationActions.navigate({ routeName: 'MyTab' })//Login MyTab
]
});
this.props.navigation.dispatch(resetAction)
35.Google下载
maven { url 'https://maven.google.com' }