Я создаю приложение VR с помощью React 360. Я пытаюсь в конечном итоге создать приложение, как показано здесь Пример мультиповерхности Facebook VR. Я беру код для этого примера и пытаюсь вписать его в свое приложение. Однако у меня возникла проблема со следующей инициализацией моих компонентов React.
У меня есть следующее приложение react-360 со следующим кодом index.js
import React from 'react';
import connect from './Store';
import {
asset,
AppRegistry,
StyleSheet,
Text,
View,
VrButton,
} from 'react-360';
import Entity from 'Entity';
const ModelView = props => {
*********** Problem **************
Why are my props undefined if I am declaring it in the wrapper?
**********************************
return (
<Entity
style={{transform: [{scaleX: 1.25}, {scaleY: 1.25}]}}
source={{obj: asset(`${props.planetName}.obj`), mtl: asset(`${props.planetName}.mtl`)}}
/>
);
};
const ConnectedModelView = connect(ModelView);
export default ConnectedModelView;
AppRegistry.registerComponent('ModelView', () => ModelView);
Из приведенного выше кода мои реквизиты для ModelView
не должны быть неопределенными. При инициализации он должен иметь значение earth
.
Реквизит должен быть инициализирован в Store.js
. Вот код ниже:
import React from 'react';
const State = {
planetName: 'earth'
};
const listeners = new Set();
export default function connect(Component) {
return class Wrapper extends React.Component {
state = {
planetName: State.planetName
};
_listener = () => {
this.setState({
planetName: State.planetName
});
};
componentDidMount() {
listeners.add(this._listener);
}
componentWillUnmount() {
listeners.delete(this._listener);
}
render() {
return (
<Component
{...this.props}
planetName={this.state.planetName}
/>
);
}
};
}
Взяв страницу из кода facebook, я инициализирую представление модели с помощью метода Store.connect
. Этот метод создает оболочку вокруг ModelView
, где я устанавливаю реквизиты через State.planetName
. Тем не менее, я продолжаю получать неопределенность, и я не знаю, почему. Я жестко запрограммировал каждую часть кода, в которой State.planetName
соответствует значению земли, и оно все еще не определено. Для реквизита не установлено значение, которое я хочу, и я не уверен, почему. Может ли кто-нибудь помочь мне с тем, почему это может быть так? Буду признателен за помощь.