react-native下引入原生组件无法显示的原因

导入原生组件到RN应该注意的问题

不是所有的元生组件都可以导入RN的,有的要支持自动布局的导入才能成功, 比如一个 原生btn你设置他的位置 长宽就能显示了,但是如果这个btn里面有很多子view,这些子view 要在 layoutSubView这个oc 回调函数里面重新布局下位置 或者这些子view都是autolayout布局的;

引用原生组件在RN中如何控制位置?

前面ios那边写了个原生的音乐播放组件给我调用,但是一个比较坑的问题是用RN渲染出来样式布局全乱了,而且乱得还没规律,组件内的一些功能也无法使用。后面看到一篇文章点这里查看,里面有一段话引起了我的注意

我们可以看到它的页面有很多层次,中间还有一个对焦框。其实我们只关心最外面的一层,最终应用开发者使用最外面一层的 View 即可,对里面的视图并不关心。在 Android 中我们一般会用 XML Layout 去布局,但是在设计一个 API 的时候,给用户很多种方式显然是不太合适的。当你给了用户一个 XML,然后说用我们的 API 的时候,在 Android 里面还要再去改 XML,如果对方是一个 Web 开发者,它通过 React Native 技术进入了移动开发领域,看到这个 XML 之后会感觉很慌,因为并不知道这个是什么。同理,iOS 里面也是一样的,里面可能会要用到 Auto Layout。这些都是不太推荐的。所以在 Android 里面,我们是直接用代码进行布局,它的核心界面结构并不是太复杂。iOS 里面也是直接保持了最外层的 View 和里面的 View 大小一致。但最终开发者使用的,都是用 Flex Box 来布局。

上面这段话里面说的iOS 里面也是直接保持了最外层的 View 和里面的 View 大小一致,通过实践发现,这个意思是说前端这边设置的视图大小应该与原生那边设置的视图大小保持一致,果然这样设置后组件就能正常显示,并且功能也能正常使用了。

这个是ios里面设置的大小位置
mainViewController.view.frame = CGRectMake(0,300,400);

下面这个是我引入这个组件的代码

var GiftView = React.createClass({
    propTypes: {

    },render(){
        return (
            <View>
                <MusicPlayerView style={styles.con}/>
                <Text style={styles.txt}>我是播放器</Text>
            </View>
        );
    }
})
var MusicPlayerView = requireNativeComponent('RCTMyMusicPlayer',GiftView);
const styles = {
    con: {
        width: 300,height:400,backgroundColor: '#ff0000',},txt: {
        marginTop: 30,}
}
module.exports = GiftView;

知道了问题的原因,接下来就很好办了。我们可以让ios那边暴露出组件的一些属性和方法,我们在调用时根据我们前端这边设置的大小样式去设置ios那边的大小位置,这样就能保证组件的正常显示了,而且控制权交给前端也算是比较合理的。

后面还会更新,欢迎有兴趣的同学一起交流

原创文章,如需装载,请注明出处

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom