标签: react-native-native-ui-component

本机 UI 组件 - Android 视图更新时刷新

我们正在尝试实现一个原生 UI 组件,该组件包装了一个 Android 组件,该组件可获取数据并使用我们现有的渲染框架(使用 )显示数据AdapterView。我们事先不知道数据是什么,所以这个组件的高度和内容是完全任意的。除了渲染组件异步请求其他内容(例如图像)的情况之外,这通常工作得很好。在这种情况下,图像被检索,图像ImageView被“显示”,但 UI 最终什么也没有显示(字面意思似乎是适当大小的透明视图)。

我们知道这些视图在普通 Android 中工作得很好,但我们似乎缺少一些东西来告诉 RN/Yoga 当从服务器加载图像时它应该重新渲染,以便它们正确显示。或多或少是这样的:

public class ReactServerListComponent extends SimpleViewManager<LinearLayoutExtension> {
  private static final String REACT_CLASS = "TAReactServerListComponent";

  @Override
  public String getName() {
    return REACT_CLASS;
  }

  ...
  @ReactProp(name = "link")
  public void setLink(final LinearLayoutExtension view, String theNewLink){
    //async loader logic invokes this on success
    view.loadRetrievedEntries(newEntries); 
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

在本例中,LinearLayoutExtension包含适配器生成的所有视图,而适配器又将包含异步加载的图像视图。

我们尝试了一些事情,例如返回ShadowNode带有测量函数的 a ,或者保留 a 的引用并对其进行ShadowNode调用等。dirty()

这样做的正确方法是什么?不幸的是,我们还没有找到处理“检查存储库”之外的真正复杂组件的文档或示例......

android-layout react-native react-native-native-ui-component

5
推荐指数
1
解决办法
868
查看次数

本机 UI 组件抛出不变违规:尝试注册两个同名的视图 FridgeCameraView

尝试学习 React Native 自定义本机 UI 组件。

// FridgeCameraViewManager.swift

import UIKit

@objc(FridgeCameraViewManager)
class FridgeCameraViewManager: RCTViewManager {

  override func view() -> UIView! {
    let label = UILabel()
    label.text = "Swift Component"
    label.textAlignment = .center
    return label
  }

  @objc static override func requiresMainQueueSetup() -> Bool {
    return false
  }
}
Run Code Online (Sandbox Code Playgroud)

// FridgeCameraViewManager.h

#import <Foundation/Foundation.h>
#import "React/RCTViewManager.h"

@interface RCT_EXTERN_MODULE(FridgeCameraViewManager, RCTViewManager)


@end
Run Code Online (Sandbox Code Playgroud)

// FridgeCameraView.js

import {requireNativeComponent} from 'react-native';
const FridgeCameraView = requireNativeComponent('FridgeCameraView', null);
export default FridgeCameraView;
Run Code Online (Sandbox Code Playgroud)

当我尝试在 App.js 中的某处使用 FridgeCameraView 组件时,它仅在我使用 Xcode 构建并运行项目时才有效。否则,在更改某些内容时使用热重载,我会收到“不变违规:尝试注册两个具有相同名称的视图 …

ios react-native react-native-ios react-native-native-ui-component

5
推荐指数
1
解决办法
970
查看次数

如何在Android中实现React Native UI组件方法

我很清楚,对于本机本机模块,我们可以使用它@ReactMethod来导出一个方法并从JSX调用它,但是我们如何在react-native本机UI组件中做同样的事情呢?

在文档中我只看到@ReactProp被提及.如果@ReactMethod不起作用,如何从JSX访问我的本机UI组件的属性呢?(在iOS上,这可以在原生ui组件RCT_EXPORT_METHOD上完成,但在Android上是类似的可能吗?)

谢谢.

react-native react-native-android react-native-native-module react-native-native-ui-component

4
推荐指数
2
解决办法
1390
查看次数