RN笔记

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'  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值