UNPKG

@ray-core/runtime

Version:

Ray 是一个全新的基于 React 的小程序开发框架

32 lines (31 loc) 1.34 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import * as React from 'react'; export default function createNativeComponent(name) { var NativeComponent = React.forwardRef(function (props, ref) { // TODO 除微信小程序外,其他可能需要优化 // 所有在Ray中使用的原生序组件传递的属性(除事件属性外)都通过`__p__ `属性传递到组件内部 // 并在组件内部通过setData转成内部data var _props = __assign(__assign({}, props), { __p__: props }); var refKey = process.env.REMAX_PLATFORM === 'ali' ? '__ref' : 'ref'; var vNodeRef = React.useRef(); _props[refKey] = React.useCallback(function (e) { vNodeRef.current = e; if (ref) { typeof ref === 'function' ? ref(e) : (ref.current = e); } }, [ref]); return React.createElement(name, _props, props.children); }); NativeComponent.displayName = name; return NativeComponent; }