首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >aframe with react-屏幕上没有图像

aframe with react-屏幕上没有图像
EN

Stack Overflow用户
提问于 2017-08-02 00:19:17
回答 1查看 319关注 0票数 0

我正在尝试使用A-frame和react在我的代码中实现全景功能。

这是我在react中的代码。在我的代码中,在调用loadOne函数之后,如果我只调用<img />,那么屏幕上只会出现一个图像

但是有了<a-scene>,什么都不会出现在屏幕上。

代码语言:javascript
复制
import React from 'react';
import ReactDOM from 'react-dom';
import $ from 'jquery';
import 'aframe';
import 'aframe-particle-system-component';
import {Entity, Scene} from 'aframe-react';

class App extends React.Component{
  constructor(props){
    super(props);
    this.state={
      images:[],
      pano:'',
      name:'',
      list:[],
      isClicked:false,
      imageUrl:''
    }
    this.loadImages=this.loadImages.bind(this);
    this.loadOne=this.loadOne.bind(this);
  }


  loadImages(){
    console.log("load");
    var that=this;
    $.ajax({
      type:'GET',
      url:'https://demo0813639.mockable.io/getPanos',
      success:function(result){
        var images=that.state.images;
        for(var i=0;i<result.length;i++){
          that.state.images.push({"pano":result[i].pano,"name":result[i].name});
        }
        that.setState({
          images:images
       })
  }

})

}

loadOne(pano){
  this.setState({
    isClicked:true,
    imageUrl:pano
  })
}


  render(){
    //let content=<p></p>;
    var list=this.state.list;
    if(this.state.isClicked===false){
      list=this.state.images.map((result)=>{
        //console.log(result.name);
      return(<div className="box">
              <div className="label">{result.name}</div>
                <img src={result.pano} className="image col-md-3" onClick={this.loadOne.bind(this,result.pano)}/>   
            </div>
            )
     })
   }else{
      return(
          <Scene>
            <Entity position="0 -2 0" rotation="-90 0 0"><img src={this.state.imageUrl}/></Entity>
          </Scene>
      )
   }
    return( 
      <div>
        <button onClick={this.loadImages}>Click</button>
        <div >{list}</div>      
      </div>
          );
  }
}

我也需要修改一下webpack吗?

代码语言:javascript
复制
var webpack = require('webpack');
var path = require('path');

var node_dir = __dirname + '/node_modules',
    lib_dir = __dirname + '/public/libraries';

var config = {
    // The resolve.alias object takes require expressions 
    // (require('react')) as keys and filepath to actual
    // module as values
    resolve: {
        alias: {
            react: lib_dir + '/react',
            "react-dom": lib_dir + '/react-dom',
            "jquery": lib_dir + '/jquery-3.2.1.js',
            react:preact
        },
        extensions:['.js','.jsx','.json']
    },
    plugins: [

        new webpack.optimize.CommonsChunkPlugin({ // 
            name: 'vendors',
            filename: 'build/vendors.bundle.js',
            minChunks: 2,
        }),

        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoEmitOnErrorsPlugin()
    ],

    entry: {
        musicApp: ['./public/js/app.js', 'webpack/hot/only-dev-server'],
        vendors: ['react', 'react-dom', 'jquery', 'webpack/hot/only-dev-server']
    },

    output: {
        path: path.join(__dirname, "public"),
        filename: 'build/[name].bundle.js',
        libraryTarget: "umd"
    },

    module: {

        noParse: [
            new RegExp(lib_dir + './react.js'), 
            new RegExp(lib_dir + './react-dom.js')
        ],
        rules: [
             {
                test: /\.js?$/,

                loaders: ['react-hot-loader/webpack', 'babel-loader'],
                include: path.join(__dirname, 'public')

            }, 
            {
                loader: 'babel-loader',
                query: {
                    presets: ['react', 'es2015']
                },
                include: path.join(__dirname, 'public')
            }
        ]
    }
}

module.exports = config;

我也包含了A-frame的库。那么,这里出了什么问题呢?我收到了这样的错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 00:57:53

了解A-Frame不能开箱即用React是很重要的。

每当您在JSX中包含像<a-scene>这样的标记时,React都会期望它与现有组件相匹配。这是因为JSX中的所有标签都映射到组件(要么是内置的,比如<img />,要么是定制的)。

因此,您需要做的就是使用一个库,它将React组件逻辑包装在这些新的vr标记上,比如aframe-react

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45442936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档