结合 React 和 React-Native
Combining React and React-Native
我有一个关于在 React-native 应用程序中组合 React 元素的问题。
这样的事情可能吗?
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Image,
ListView,
Switch,
TextInput,
AsyncStorage,
BackAndroid,
Navigator,
TouchableOpacity, } from 'react-native';
var ReactDOM = require('react-dom');
var Barcode = require('react-barcode');
class Third extends React.Component {
ReactDOM.render(
<Barcode value="http://github.com/kciter" />,
mountNode
);
};
我问这个是因为我找不到用于 react-native 的条形码生成器模块。有什么建议吗?
谢谢大家的回复,
多门
不可能。 React Native 环境在后台使用本机组件,而不是实际的 DOM,因此您不能简单地在此环境中使用 React 组件并收工。
最好的办法是寻找本地替代品。
您可以理论上 创建一个本机组件,该组件将创建一个 Web 视图,并在该视图中呈现其子项。您将需要使用 private ReactMultiChild
API — 事实上,这就是 React 组件用来允许在 DOM 以外的事物上呈现的东西,喜欢 canvas。
比如react-canvas does it, I also did it myself on my side project,还有canvas。它看起来像这样:
<Canvas>
<CanvasRect frame={[10, 10, 20, 20]} color="black" />
</Canvas>
在此示例中,CanvasRect
将由 Canvas
渲染到 canvas 元素上,而不是实际的 DOM。
因此,无论如何都可以将多个渲染器连接在一起。对于您的用例,从头开始并为 React Native 中的 Web 组件创建类似的桥梁可能有点矫枉过正。
(编辑:我写了 a post on custom React renderers。虽然它没有触及 React Native,但该方法非常通用。)
你本质上需要的是从 react-native 组件到 react 组件(实际 DOM 对象)的映射。 React-Native-Web 就是这样做的。可以嵌套React和React-Native的组件。
例如
<ScrollView>
<div>Hello World</div>
</ScrollView>
此代码将转换并创建实际的 DOM(不是最漂亮的代码,但可以完成工作)。目前,它不支持所有组件的映射,但支持大多数组件。
React-Native-Web 严重依赖 webpack. So make sure you have a good understanding of webpack 在你进入它之前。
我有一个关于在 React-native 应用程序中组合 React 元素的问题。 这样的事情可能吗?
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Image,
ListView,
Switch,
TextInput,
AsyncStorage,
BackAndroid,
Navigator,
TouchableOpacity, } from 'react-native';
var ReactDOM = require('react-dom');
var Barcode = require('react-barcode');
class Third extends React.Component {
ReactDOM.render(
<Barcode value="http://github.com/kciter" />,
mountNode
);
};
我问这个是因为我找不到用于 react-native 的条形码生成器模块。有什么建议吗?
谢谢大家的回复,
多门
不可能。 React Native 环境在后台使用本机组件,而不是实际的 DOM,因此您不能简单地在此环境中使用 React 组件并收工。
最好的办法是寻找本地替代品。
您可以理论上 创建一个本机组件,该组件将创建一个 Web 视图,并在该视图中呈现其子项。您将需要使用 private ReactMultiChild
API — 事实上,这就是 React 组件用来允许在 DOM 以外的事物上呈现的东西,喜欢 canvas。
比如react-canvas does it, I also did it myself on my side project,还有canvas。它看起来像这样:
<Canvas>
<CanvasRect frame={[10, 10, 20, 20]} color="black" />
</Canvas>
在此示例中,CanvasRect
将由 Canvas
渲染到 canvas 元素上,而不是实际的 DOM。
因此,无论如何都可以将多个渲染器连接在一起。对于您的用例,从头开始并为 React Native 中的 Web 组件创建类似的桥梁可能有点矫枉过正。
(编辑:我写了 a post on custom React renderers。虽然它没有触及 React Native,但该方法非常通用。)
你本质上需要的是从 react-native 组件到 react 组件(实际 DOM 对象)的映射。 React-Native-Web 就是这样做的。可以嵌套React和React-Native的组件。
例如
<ScrollView>
<div>Hello World</div>
</ScrollView>
此代码将转换并创建实际的 DOM(不是最漂亮的代码,但可以完成工作)。目前,它不支持所有组件的映射,但支持大多数组件。
React-Native-Web 严重依赖 webpack. So make sure you have a good understanding of webpack 在你进入它之前。