在React中如何正确引入A-Frame实现VR场景?
我最近在用React做项目,想加个简单的VR展示,就试了A-Frame。但按照官网例子直接写标签,页面直接报错说“a-scene is not a valid JSX element”。
我查了下,好像React不认识自定义元素。网上有人说要用createElement或者加命名空间,但我试了都不行。有没有人成功在React里跑过A-Frame?具体该怎么写?
我现在代码大概是这样:
import React from 'react';
import 'aframe';
function VRScene() {
return (
<a-scene>
<a-box position="0 1 -3" rotation="0 45 0" color="#4CC3D9"></a-box>
<a-sky color="#ECECEC"></a-sky>
</a-scene>
);
}
export default VRScene;
最省心的办法是用react-aframe这个官方封装库:
先安装:
然后你的代码改成这样:
就这两行改动,其他保持不变。
如果你不想装这个额外依赖,也可以用React.createElement手动创建,但代码会变得很恶心,全是嵌套的createElement调用,完全丧失JSX的可读性,没必要为难自己。
另外注意一点:A-Frame 1.2.0之后的版本对React的支持更好了,确保你用的是较新版本。