• Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,


    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网

    我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981

    【之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发

    相关文章:

    Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用

    Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

    Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

    Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

    Expo大作战(五)--expo中app.json 文件的配置信息

    Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

    Expo大作战(七)--expo如何使用Genymotion模拟器

    Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

    更多>>

    写在二十三章以后的话,之前的翻译,不管如何,好与不好,终究是告一段落,也把expo基础理论的东西又深入的理解了一遍,后续expo大作战系列将主要介绍expo sdk的api。


    SecureStore

    提供在设备上本地加密和安全存储键值对的方法。 每个expo项目都有独立的存储系统,无法访问其他expo项目的存储。

    iOS:使用keychain服务将值存储为kSecClassGenericPassword。 iOS有额外的选项可以设置值的kSecAttrAccessible属性,该属性控制何时可以获取值。

    Android:值存储在SharedPreferences中,并使用Android的Keystore系统进行加密

    Expo.SecureStore.setItemAsync(key,value,options)
    存储键值对。

    参数

    key (string) - 与存储值关联的键。按键可能包含字母数字字符。, - 和_(Keys may contain alphanumeric characters .-, and _.)。

    value (string) - 要存储的值。

    选项(对象)(可选)(options (object) (optional) ) - 选项图:

    keychainService (string)  -

    • iOS:该项目的服务,相当于kSecAttrService
    • Android:相当于公钥/私钥对别名

    注意如果使用keychainService选项设置该项目,则需要稍后获取该值。

    keychainAccessible (enum) -

    仅限iOS:使用iOS的kSecAttrAccessible属性指定存储条目何时可访问。请参阅Apple关于钥匙串物品辅助功能的文档。可用的选项是:

    • Expo.SecureStore.WHEN_UNLOCKED:钥匙串项目中的数据只能在设备被用户解锁时访问。
    • Expo.SecureStore.AFTER_FIRST_UNLOCK:重启后无法访问钥匙串项目中的数据,直到用户解锁设备一次。如果您在手机锁定时需要访问该项目,这可能很有用。
    • Expo.SecureStore.ALWAYS:无论设备是否被锁定,始终可以访问钥匙串项目中的数据。这是最不安全的选择。
    • Expo.SecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY:与WHEN_UNLOCKED类似,但从备份还原时不会将条目迁移到新设备。
    • Expo.SecureStore.WHEN_PASSCODE_SET_THIS_DEVICE_ONLY:与WHEN_UNLOCKED_THIS_DEVICE_ONLY类似,用户必须设置密码才能存储条目。如果用户删除他们的密码,该条目将被删除。
    • Expo.SecureStore.AFTER_FIRST_UNLOCK_THIS_DEVICE_ONLY:与AFTER_FIRST_UNLOCK类似,但从备份还原时不会将条目迁移到新设备。
    • Expo.SecureStore.ALWAYS_THIS_DEVICE_ONLY:与ALWAYS类似,但从备份还原时不会将条目迁移到新设备。

    返回

    如果值无法存储在设备上,则承诺将拒绝(A promise that will reject if value cannot be stored on the device.)

    Expo.SecureStore.getItemAsync(key,options)
    获取与提供的密钥关联的存储值。

    参数

    key (string)  - 用于存储关联值的键。

    options (object)  选项(对象)(可选) - 选项图:

    keychainService(字符串) - iOS:项目的服务,等同于kSecAttrService。 Android:相当于公钥/私钥对别名。

    注意如果使用keychainService选项设置该项目,则需要稍后获取该值。

    返回

    解析为先前存储的值的承诺;如果没有给定键的条目,则为null。 如果在检索值时发生错误,承诺将拒绝。

    Expo.SecureStore.deleteItemAsync(键,选项)
    删除与提供的密钥关联的值。

    参数

    key (string)  - 用于存储关联值的键。

    options (object)  选项(对象)(可选) - 选项图:

    keychainService(字符串) - iOS:项目的服务,等同于kSecAttrService。 Android:相当于公钥/私钥对别名。 如果该项目使用KeychainService进行设置,则需要稍后获取该值。

    返回

    如果价值无法删除,承诺将拒绝。

    用这个做本地化储存的话,要安全些,这也是他的优点,提供在设备上本地加密和安全存储键值对的方法。 每个expo项目都有独立的存储系统,无法访问其他expo项目的存储。

    ScreenOrientation

    允许在运行时更改支持的屏幕方向。 这将优先于app.json中的方向键。

    Expo.ScreenOrientation.allow(orientation)

    允许屏幕方向。 您可以使用多个方向多次调用此函数以允许多个方向。

    参数

    orientation (string)  - 允许的方向。 有关可能的值,请参阅方向枚举。

    function changeScreenOrientation() {
      Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
    }

    Expo.ScreenOrientation.Orientation

    包含可以传递给allow函数的值的对象。(几种枚举类型,代表可以传递给Expo.ScreenOrientation.allow(orientation)的参数

    • ALL - 所有4种可能的方向
    • ALL_BUT_UPSIDE_DOWN - 除了反向肖像之外,可能是某些Android设备上的所有4种方向。
    • PORTRAIT  - 肖像取向,也可能是某些Android设备上的反向肖像。
    • PORTRAIT_UP - 仅限上行肖像。(Upside portrait only.)
    • PORTRAIT_DOWN - 仅限颠倒肖像。
    • LANDSCAPE - 任何风景定位。
    • LANDSCAPE_LEFT - 仅限左侧风景。
    • LANDSCAPE_RIGHT - 仅限右侧景观。

          下为原文:

    • ALL — All 4 possible orientations

    • ALL_BUT_UPSIDE_DOWN — All but reverse portrait, could be all 4 orientations on certain Android devices.

    • PORTRAIT — Portrait orientation, could also be reverse portrait on certain Android devices.

    • PORTRAIT_UP — Upside portrait only.

    • PORTRAIT_DOWN — Upside down portrait only.

    • LANDSCAPE — Any landscape orientation.

    • LANDSCAPE_LEFT — Left landscape only.

    • LANDSCAPE_RIGHT — Right landscape only.

    检测方向何时改变(Detecting when the orientation changes)

    做到这一点的最好方法是监听对尺寸的更改。(The best way to do this is to listen for changes to Dimensions.)

    registerRootComponent

    Expo.registerRootComponent(component)

    设置expo用于您的应用程序的主要组件。

    注意:在SDK 18之前,有必要直接使用registerRootComponent,但对于从SDK 18或更高版本创建的项目,这将在Expo SDK中自动处理。

    参数

    component(ReactComponent) - 呈现应用程序其余部分的React组件类。

    返回

    没有返回值。(No return value.)

    注意:Expo.registerRootComponent大致相当于React Native的AppRegistry.registerComponent,并提供一些额外的挂钩来提供Expo的特定功能(是对AppRegistry.registerComponent的又一个高层的封装)。

    常见问题

    我在SDK 18之前创建了我的项目,并且我想要移除Expo.registerRootComponent,我该怎么做?

    • 在继续之前,请确保您的项目在SDK 18或更高版本上运行。
    • 打开main.js(或者如果你改变它,无论你的“main”是在package.json中)。(Open up main.js (or if you changed it, whatever your "main" is in package.json).)
    • 将“main”设置为“node_modules / expo / AppEntry.js”。
    • 从main.js中删除Expo.registerRootComponent调用,并在根组件的类声明之前放置导出默认值。(Delete the Expo.registerRootComponent call from main.js and put export default before your root component’s class declaration.)
    • 将main.js重命名为App.js.

    如果我想将我的主应用程序文件命名为App.js以外的东西,该怎么办?

    您可以将package.json中的“main”设置为项目中的任何文件。 如果你这样做,那么你需要使用registerRootComponent; 如果您使用自定义条目文件,导出默认值将不会使该组件成为expo应用程序的根。

    例如,假设您希望将“src / main.js”作为应用程序的条目文件 - 例如,您可能不喜欢在项目根目录中包含JavaScript文件。 首先,在package.json中设置它:

    {
      "main": "src/main.js"
    }

    然后在“src / main.js”中,确保你调用了registerRootComponent(),并将你想渲染的组件传递给应用程序的根目录。

    import Expo from 'expo';
    import React from 'react';
    import { View } from 'react-native';
    
    class App extends React.Component {
      render() {
        return <View />;
      }
    }
    
    Expo.registerRootComponent(App);

    这一部分很有用,大家慢慢体会,用到的时候,就用!


    下一张继续介绍,这一篇主要介绍了:expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

  • 相关阅读:
    vscode 前端好用插件汇总
    IE8和IE9下textarea滚动选中的问题
    javascript实现数字整数位每三位一个逗号分隔
    简单枚举(算法竞赛入门经典)
    拓扑排序(算法竞赛入门经典)
    七桥问题--欧拉(算法竞赛入门经典)
    走迷宫问题 算法竞赛入门经典
    ZOJ1008
    ZOJ1163
    HDU 1069 Monkey and Banana
  • 原文地址:https://www.cnblogs.com/gdsblog/p/8598051.html
Copyright © 2020-2023  润新知