React Native常用属性

1.flex属性

//flexDirection表示排布的方向,类似android线性布局的排布方向:横线和竖向,默认是竖向'column',横向'row'
//justifyContent:表示布局内实际内容的显示区域(以横向的row举例):整体居左、居右、居中、还是两端贴边中间控件间距相等('space-between'),还是单个控件的左右间距都相等('space-around')
//alignItems:表示所有控件在显示区域的对其方式:比如4个控件都设置是在X轴上排列,但是高度不相等,这个属性就是来描述这几个控件在Y轴上如何对其:
//center:数值居中;flex-start:顶部对其;flex-end:底部对其;stretch:上下都对其,类似start和end的结合体
  position: 'absolute',

 

2.获取屏幕宽高

const Dimensions = require('Dimensions'); //必须要写这一行,否则报错,无法找到这个变量
const ScreenWidth = Dimensions.get('window').width;
const ScreenHeight = Dimensions.get('window').height;

 

 

3.设置图片

 

 

// var important = require('../image_jingdong/a2.png');
// return (
//     <View style={{backgroundColor: "white", flex: 1, alignItems: 'center'}}>
//         <Image source={important} style={{position: 'absolute', bottom: ScreenHeight*0.05}}></Image>
//     </View>
// );
// }

4.数据存储

//数据持久化
//https://github.com/sunnylqm/react-native-storage/blob/master/README-CHN.md
import Storage from 'react-native-storage';
import { AsyncStorage } from 'react-native';
var storage = new Storage({
    size: 1000,
    defaultExpires: null,
    enableCache: true,
    // 存储引擎:对于RN使用AsyncStorage,对于web使用window.localStorage
    // 如果不指定则数据只会保存在内存中,重启后即丢失
    storageBackend: AsyncStorage
})
// storage.save({
//     key:'userMessage',
//     data:{
//         engiTeam:'',
//         groupLoginName:'',
//         groupName:'',
//         groupLoginPwd:''
//     }
// })
global.storage = storage;

//  storage.save({
//     key: 'user',  // 注意:请不要在key中使用_下划线符号!
//     id: '1001',   // 注意:请不要在id中使用_下划线符号!
//     data: userA,
//     expires: 1000 * 60
//   });
//
//   //load 读取
//   storage.load({
//     key: 'user',
//     id: '1001'
//   }).then(ret => {
//     // 如果找到数据,则在then方法中返回
//     console.log(ret.userid);
//   }).catch(err => {
//     // 如果没有找到数据且没有sync方法,
//     // 或者有其他异常,则在catch中返回
// 	console.warn(err.message);
// 	switch (err.name) {
// 	    case 'NotFoundError':
// 	        // TODO;
// 	        break;
//         case 'ExpiredError':
//             // TODO
//             break;
// 	}
//   })
 删除单个数据
// storage.remove({
// 	key: 'lastPage'
// });

 

5.网络状态判断

 

是否有网:

 

 //判断网络状态
        NetInfo.isConnected.fetch().done((isConnected) => {
            if (isConnected) {
                this.getPermission();
            } else {

            }
            console.log('First, is ' + (isConnected ? 'online' : 'offline'));
        });

6.MD5加密

//md5加密https://github.com/digitalbazaar/forge#md5
var forge = require('node-forge');
   var md = forge.md.md5.create();
            md.update(this.state.inputPassword);
           var password = md.digest().toHex();

7.判断是android还是iOS

  Platform
} from 'react-native'
if(Platform.OS==='android'){
    this.setState((prevState) => ({marginTop: 0}));
}else {
    this.setState((prevState) => ({marginTop: 20}));
}

8.将RN中的页面作为android的Activity来使用

Activity继承ReactNativeActivity,重写getMainComponentName,在里面返回RN的页面注册的名字,即可。

public class MessageListActivity extends ReactActivity{
    @Override
    protected String getMainComponentName() {
        return "MessageListActivity";
    }
}
export default class MessageListActivity extends React.Component {
    componentDidMount() {
        if (Platform.OS === 'android') {
            this.setState((prevState) => ({marginTop: 0}));
        } else {
            this.setState((prevState) => ({marginTop: 20}));
        }

    }

    constructor(props) {
        super(props);
        this.state = {marginTop: 0}
    }

    render() {
        return (
            <View style={{alignItems:'center',flex: 1, marginTop: this.state.marginTop, backgroundColor: 'white'}}>
                <Text style={{marginTop:15,marginLeft:0.025*ScreenWidth, color: 'black', fontWeight: 'bold', fontSize: 16}}>消息列表</Text>


            </View>
        );
    };
}

 

//将这里的页面映射到android工程
AppRegistry.registerComponent('MessageListActivity', () => MessageListActivity);

 

8.判断string是否为空

 

(typeof obj == "undefined" || obj == null || obj == "")?{uri:baseImageUrl}:{uri: item.userImage}

 

9.判断string是否包含string

 

 if(this.state.allUpImages[this.state.nowUpImageIndex].uri.indexOf('upload')!=-1){
                //表示存在
            }

10.数组为空

if (array === undefined || array.length == 0) {
    // array empty or does not exist
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React Native是一种用于构建跨平台移动应用的框架,它可以使用JavaScript和React技术来开发原生移动应用。下面是React Native的一些常见用法: 1. 创建一个新的React Native项目: 使用React Native CLI命令行工具创建一个新的React Native项目,例如: ``` npx react-native init MyApp ``` 2. 编写组件: 在项目中编写React Native组件,可以使用class组件或函数式组件来定义自定义组件。组件可以包含UI元素、样式和交互逻辑等。 3. 导入和使用内置组件: React Native提供了许多内置的UI组件和API,可以通过导入和使用它们来构建应用。例如,可以使用View、Text、Image、Button等组件来创建用户界面。 4. 样式和布局: 使用StyleSheet.create()方法创建样式对象,并将其应用于组件的style属性中。可以使用Flexbox布局模型来进行灵活的布局。 5. 处理用户输入和交互: 可以使用内置的触摸事件(如onPress、onLongPress等)来处理用户的输入和交互。还可以使用手势识别器(如PanResponder)来实现更复杂的手势操作。 6. 导航和路由: React Navigation是一个常用的第三方库,用于实现导航和路由功能。可以使用它来创建导航栏、选项卡、侧边菜单等导航组件。 7. 调用原生模块和API: 如果需要访问设备的原生功能和API,可以使用React Native提供的桥接机制来调用原生模块和API。这允许开发者编写原生代码并与React Native应用进行交互。 8. 调试和测试: React Native提供了一些调试和测试工具,如React Native Debugger、Reactotron等,可以帮助开发者调试和测试应用。 以上是React Native的一些常见用法,但还有很多其他的功能和工具可供使用。建议查阅React Native官方文档和相关教程来深入了解和学习React Native的使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值