React Native 桥接组件封装原生组件属性

自定义属性可以让组件具备更多的灵活性,所以有必要在JS 层通过自定义属性动态传值。

一、添加原生组件属性

因为 ViewManager 管理了整个组件的行为,所以要新增组件属性也需要在这里面(如 InfoViewManager)进行定义。

1、在InfoViewManager 中定义一个 setAvatar 方法。

在这里插入图片描述
@ReactProp 是 React Native 中的注解,用于标记一个方法,该方法用于处理从 JavaScript 到原生组件传递的属性(props)的更新。

@ReactProp 注解标记的方法应该接受两个参数,第一个参数是原生组件实例,第二个参数是要更新的属性的值。React Native 框架会负责确保传递的属性值与方法的第二个参数类型匹配。

上图中 setAvatar 方法被 @ReactProp 注解标记,表示它用于处理 name 为 “avatar” 的属性的更新。

2、这里需要从原始的视图中拿到组件的实例去执行更新,所以需要在 InfoView 中定义一个方法去更新组件的值。

在这里插入图片描述
到这里就完成了头像 avatar 这个属性的添加。

如果没有 Glide 这个类,可在 build.gradle 文件中添加一行代码,重新下载依赖项,运行项目

implementation("com.github.bumptech.glide:glide:4.2.0")

在这里插入图片描述

3、以此类推,再给组件添加一个 desc属性

在这里插入图片描述
在这里插入图片描述

二、在 JS 层使用原生组件属性

1、修改公共组件 NativeInfoView 传入两个自定义属性 avatardesc

在这里插入图片描述

2、在业务组件里使用

在这里插入图片描述

在这里插入图片描述在这里插入图片描述
效果如图:
在这里插入图片描述
相关链接:
React Native 桥接原生实现 JS 调用原生方法
React Native 桥接原生常量
React Native 桥接原生原子组件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/616642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从DETR到Mask2Former(1):DETR-segmentation结构全解析

网上关于DETR做的detection的解析很多,但是DETR做Segmentation的几乎没有,本文结合DETR的论文与代码,对DETR做一个详细的拆解。理解DETR是理解Mask2Former的基础。 首先得把DETR-segmentation给run起来。Github上DETR的repository&#xff0…

【python入门】day26:统计字符串中出现指定字符的次数

案例 实际上if name“main”:就相当于是 Python 模拟的程序入口 。由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个,选中哪个入口程序取决于 ** ** name** **的值。 代码 #-*- coding:utf-8 -*- #开发时间&#xff…

SQL-分页查询and语句执行顺序

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:重拾MySQL 🍹文章作者技术和水平很有限,如果文中出现错误&am…

Pytest插件pytest-cov:优雅管理测试覆盖率

在软件开发中,测试覆盖率是评估测试质量的关键指标之一。为了更方便地统计和管理测试覆盖率,Pytest插件"pytest-cov"应运而生。本文将介绍"pytest-cov"的基本用法和优雅管理测试覆盖率的方法。 什么是pytest-cov? pytest-cov 是Pyt…

7-4 jmu-Java-01入门-开根号 --笔记篇

题目 使用逐步逼近法对给定数值x求开根号。 逐步逼近法说明&#xff1a;从0开始逐步累加步长值。 步长0.0001&#xff0c;epsilon(误差)0.0001 循环继续的条件&#xff1a; 平方值<x 且 |x-平方值| > epsilon ###说明与参考 数值输出保留6位小数&#xff0c;使用S…

【C/C++】C语言的高级编程

C语言的高级编程 预定义宏宏展开下的#与##的使用常用的数据类型有结构体定义类型修饰符&#xff1a;对内存资源存放位置的限定&#xff0c;资源属性中位置的限定。 预定义宏 __FUNCTION__ //函数名 __LINE__ //行号 __FILE__ //文件名printf(" the %s,%s,%d\n"…

Docker数据卷与拦截与目录拦截

目录 高级容器挂载技术深度解析引言数据卷挂载原理解析应用场景使用介绍 目录挂载原理解析应用场景使用介绍 总结 高级容器挂载技术深度解析 引言 容器技术的快速发展使得容器挂载技术变得愈发重要。在容器化应用中&#xff0c;数据卷挂载和目录挂载是两种常见的挂载方式&…

用一只麻雀来观察Linux内存分配惰性策略

结论先行 我们知道现代的计算机系统&#xff0c;通常分为虚存和物理内存。其中虚存和物理内存之间存在地址映射。 原则上机器的物理内存是宝贵的&#xff0c;所以&#xff0c;Linux使用懒惰的策略来进行分配物理内存&#xff0c;直到虚存被真实使用到&#xff01; 实验设计 …

【Python机器学习】SVM——调参

下面是支持向量机一个二维二分类数据集的训练结果&#xff1a; import mglearn import matplotlib.pyplot as plt from sklearn.svm import SVCplt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False X,ymglearn.tools.make_handcrafted_dataset()…

网络传输的七层协议是哪七层

当涉及到网络通信时&#xff0c;OSI参考模型定义了七个层级来描述网络协议和通讯过程。以下是对每个层级的详细介绍&#xff1a; 物理层&#xff08;Physical Layer&#xff09;&#xff1a; 物理层负责将比特流传输到物理媒介上。确定电压、光信号等传输细节&#xff0c;并定义…

ModuleNotFoundError: No module named ‘simple_knn‘

【报错】使用 AutoDL 复现 GaussianEditor 时引用 3D Gaussian Splatting 调用simple_knn 时遇到 ModuleNotFoundError: No module named ‘simple_knn‘ 报错&#xff1a; 【原因】 一开始以为是版本问题&#xff0c;于是将所有可能的版本都尝试了 (from versions: 0.1, 0.2…

笔试面试题——继承和组合

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f;二、什么是菱形虚拟继承&am…

笙默考试管理系统-MyExamTest----codemirror(67)

笙默考试管理系统-MyExamTest----codemirror&#xff08;67&#xff09; 目录 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管理系统-MyExamTest----codemirror 四、 笙默考试管理系统-MyExamTest---…

Unity 鼠标点击或触摸任意拖动UGUI的方法

在Unity中&#xff0c;如果要通过鼠标拖到UI组件或者触摸移动UI组件&#xff0c;可以使用EventSystems下的方法。 具体实现如下&#xff1a; 新建一个脚本&#xff0c;DragController.cs: using System.Collections; using System.Collections.Generic; using UnityEngine; …

SqlAlchemy使用教程(一) 原理与环境搭建

一、SqlAlchemy 原理及环境搭建 SqlAlchemy是1个支持连接各种不同数据库的Python库&#xff0c;提供DBAPI与ORM&#xff08;object relation mapper&#xff09;两种方式使用数据库。 DBAPI方式&#xff0c;即使用SQL方式访问数据库 ORM, 对象关系模型&#xff0c;是用 Python…

1.1 计算机网络在信息时代的作用

1.1 计算机网络在信息时代的作用 网络&#xff08;Network&#xff09;由若干结点&#xff08;Node&#xff09;和连接这些结点的链路&#xff08;Link&#xff09;所组成。网络中的结点可以是计算机、集线器、交换机或者路由器等。 图1-1 多个网络还可以通过路由器互连起来&a…

记录一下误删除libc.so.6的经历

起因&#xff1a; 在配置环境时&#xff0c;出现’GLIBCXX_3.4.29 not found’的错误&#xff0c;在解决这个问题的过程中&#xff0c;需要删除sudo rm /usr/lib/x86_64-linux-gnu/libstdc.so.6软连接&#xff0c;但是一不小心sudo rm /lib/x86_64-linux-gpu/libc.so.6&#xf…

使用主题模型和古老的人类推理进行无监督文本分类

一、说明 我在日常工作中不断遇到的一项挑战是在无法访问黄金标准标签的情况下标记文本数据。这绝不是一项微不足道的任务&#xff0c;在本文中&#xff0c;我将向您展示一种相对准确地完成此任务的方法&#xff0c;同时保持管道的可解释性和易于调整。 一些读者可能已经开始考…

枚举的用法总结

1 背景 在java语言中还没有引入枚举类型之前&#xff0c;表示枚举类型的常用模式是声明一组具有int常量。之前我们通常利用public final static 方法定义的代码如下&#xff0c;分别用1 表示春天&#xff0c;2表示夏天&#xff0c;3表示秋天&#xff0c;4表示冬天。 public c…

docker-compose一键搭建zookeeper集群

1、setup.sh setup.sh脚本用来创建本地文件夹&#xff0c;这些文件夹会被挂载到docker容器。 #!/bin/bashmkdir -p "$PWD\zoo1\data" mkdir -p "$PWD\zoo1\datalog"mkdir -p "$PWD\zoo2\data" mkdir -p "$PWD\zoo2\datalog"mkdir -p…