码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • react-native-root-siblings 在应用的根元素之后添加兄弟元素


    react-native-root-siblings

        • 引用依赖
        • react-native>=0.62
        • 4.x 版本 及react-native低于0.62
        • 3.x 版本

    npm: https://www.npmjs.com/package/react-native-root-siblings

    作用:

    作用是程序根元素之后添加同级元素。创建的兄弟元素位于应用程序元素的其余部分之上。这可以用来创建一个Modal组件或什么东西在应用程序中。

    理解:

    当你想用自定义的全局全屏的Modal的时候就有用了。在React中有 Portal 可以实现,很多开源框架如 Ant design 的Modal也是这样实现的。但是RN没有DOM节点的概念,而且根组件是在 registerComponent 中注入的,只会注册这一次作为应用的根视图。
    因此 react-native-root-siblings 的作者想了一个办法,创建一个容器同时将你自定义的Modal以及根组件同时以同层级的方式放入容器中,并通过 setWrapperComponentProvider 方法告诉RN,使用该容器代替项目中的根组件(App.js)。
    这样开发者就可以在任意位置触发全局的Modal了。

    引用依赖

    npm install react-native-root-siblings --save
    
    • 1

    react-native>=0.62

    例子
    在app.js中引入

    // in your entry file like `App.js`
    import { RootSiblingParent } from 'react-native-root-siblings';
    
    // in your render function 
    return (
      <RootSiblingParent>  
            // 在里面使用路由根组件
            <Route />
        <App />
      </RootSiblingParent>
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4.x 版本 及react-native低于0.62

    从4.0开始,默认情况下不启用Redux存储上下文注入,应该由上下文包装器设置redux存储上下文。

    需要在app.js入口文件中配置

    import { RootSiblingPortal, setSiblingWrapper  } from 'react-native-root-siblings';
    import { Provider } from 'react-redux';
    
    // 在RootSiblings中使用redux上下文之前调用setSiblingWrapper
    setSiblingWrapper((sibling) => <Provider store={store}>{sibling}</Provider>);
    
    class extends Component {
        render() {
            return (
                <RootSiblingPortal>
                    <View/>
                </RootSiblingPortal>
            )
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.x 版本

    1、创建一个兄弟元素

    let rootSibling = new RootSiblings(<View><Text>rootSibling兄弟元素</Text></View>);
    
    • 1

    2、更新创建的元素的内容

    rootSibling.update(<View><Text>rootSibling兄弟元素已更新</Text></View>);
    
    • 1

    3、销毁

    rootSibling.destroy();
    
    • 1
  • 相关阅读:
    循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(4) -- 实现DataGrid数据的导入和导出操作
    多进程编程(二):管道
    掌握5个关键点,搞定语音识别测试!
    【深入浅出玩转FPGA学习2----设计技巧(基本语法)】
    SpringCloud-7-Spring Boot使用Jetty容器
    基于C++的车辆装甲板检测自瞄系统
    《牛客刷verilog》Part I Verilog快速入门
    .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
    货币银行学重点内容复习
    怎么让重要文件自动备份到OneDrive?
  • 原文地址:https://blog.csdn.net/wxl1390/article/details/126250190
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号