我正在使用 MobX 创建一个 react 360(以前的 reactvr)项目。我在设置 Redux 时非常痛苦,为了简单起见,我选择使用 MobX。我要重新创建的是这个 youtube 视频React VR 演示 2017中介绍的项目。
我对 JS 和 VR 场景相对较新,我正在尝试理解 React,特别是 Redux 和 Mobx 等状态管理库。现在进入代码。在这里,我有以下内容index.js
:
import React from 'react';
import { decorate, observable, computed } from "mobx";
import { observer } from 'mobx-react';
import {
asset,
AppRegistry,
StyleSheet,
Text,
View,
VrButton,
} from 'react-360';
import Entity from 'Entity';
export default class PlanetMenu extends React.Component {
planetName = '';
get selectedPlanetModel() {
return this.planetName;
}
select(planet) {
this.planetName = planet;
}
render() {
return (
<View style={styles.panel}>
<View>
<VrButton
style={styles.buttonStyle}
onClick={() => this.select('earth')}>
<Text style={styles.planetName}>Earth</Text>
</VrButton>
<VrButton
style={styles.buttonStyle}
onClick={() => this.select('saturn')}>
<Text style={styles.planetName}>Saturn</Text>
</VrButton>
</View>
</View>
);
}
};
decorate(PlanetMenu, {
selectedPlanetModel: computed
})
decorate(PlanetMenu, {
planetName: observable,
})
export class ModelView extends React.Component {
render() {
return (
<Entity
style={{transform: [{scaleX: 1.25}, {scaleY: 1.25}]}}
source={{obj: asset(`${PlanetMenu.selectedPlanetModel}.obj`), mtl: asset(`${PlanetMenu.selectedPlanetModel}.mtl`)}}
/>
);
}
};
AppRegistry.registerComponent('PlanetMenu', () => PlanetMenu);
AppRegistry.registerComponent('ModelView', () => ModelView);
我所拥有的基本上是两个按钮,单击它们将动态呈现所选行星的 3D 模型。但是,它没有按预期工作。
在我的ModelView
班级中,包含的行${PlanetMenu.selectedPlanetModel}.obj
插入为'undefined.obj'
. 我想知道这是为什么?planetName
变量 in正在更新,PlanetMenu
但似乎没有被正确访问。有人可以帮我指出正确的方向。一些帮助将不胜感激。