代码之家  ›  专栏  ›  技术社区  ›  Aayushi

返回按钮无法返回

  •  1
  • Aayushi  · 技术社区  · 8 年前

      import React from 'react';
        import ReactDOM from 'react-dom';
        import $ from 'jquery';
        import {FirstPage} from './FirstPage.js';
        import {Panorama} from './Panorama.js';
        import {BrowserRouter,Route,Router,Switch} from 'react-router-dom';
        var BrowserHistory = require('react-router/lib/BrowserHistory').default;
        
        class App extends React.Component{
            constructor(props){
              super(props);
            }
        
            render(){
              return(
                <div>
                  <BrowserRouter history={BrowserHistory}>
                    <Switch>
                      <Route exact path="/" component={FirstPage} />
                      <Route path="/panorama/:id" component={Panorama} />
                    </Switch>
                  </BrowserRouter>
                </div>
                )
            }
          }
        
        ReactDOM.render(<App/>,document.getElementById('container'));
    

    FirstPage.js

    import React from 'react';
    import ReactDom from 'react-dom' ;
    import $ from 'jquery' ;
    import {Panorama} from './Panorama.js';
    import {Redirect,Link} from 'react-router-dom';
    import {withRouter} from 'react-router';
    
    class FirstPage extends React.Component{
        constructor(props){
          super(props);
          this.state={
            list:[],
            images:[],
            isClicked:false,
            redirect:true,
            imageUrl:''
          }
          this.loadImages=this.loadImages.bind(this);
          this.loadOne=this.loadOne.bind(this);
        }
        componentDidMount(){
            window.addEventListener('load',this.loadImages);
       }
    
       loadImages(){ 
          //console.log("load");
          var that=this;
          $.ajax({
            type:'GET',
            url:'https://demo0813639.mockable.io/getPanos',
            datatype:'jsonp',
            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){
        console.log("pano: ",pano);
        let imageUrl=encodeURIComponent(pano);
        this.setState({
          isClicked:true,
          imageUrl:pano
        })
        this.props.history.push(`/panorama/${imageUrl}`)
      }
    
      render(){
        var list=this.state.list;
        console.log("Image URL: "+this.state.imageUrl);
         list=this.state.images.map((result)=>{
            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>
                  )
    
           })
    
        return <div>{list}</div>
      }
    }
    
    module.exports={
      FirstPage:FirstPage
    }
    

    此页面会在屏幕上加载一些图像,当单击其中任何一个图像时,它会进入全屏模式,即屏幕上会出现一个图像和一个返回链接。

    import React from 'react';
    import ReactDOM from 'react-dom';
    import $ from 'jquery';
    import {Link} from 'react-router-dom';
    
    class Panorama extends React.Component{
      constructor(props){
        super(props);
        this.goback=this.goback.bind(this);
      }
      goback(){
        this.props.history.push('/');
      }
        render(){
            let url=decodeURIComponent(this.props.match.params.id);
          return( 
            <div className="pano">
                  <img id="myImage" src={`${url}`} crossorigin="anonymous"/>
              
              <div className="goback" onClick={this.goback}>Go back</div>
              </div>
            )
        }
      }
    
    
    module.exports={
      Panorama:Panorama
    }
    

    返回按钮url再次更改为localhost:8080,但显示一个空白页,我想要第一页。要显示的js。 在调试时,我发现最初我的html元素有4个div元素,这些元素是在FirstPage.js的代码中编写的 Index page

    after click

    控制台中没有错误,react router的版本为v4。

    1 回复  |  直到 5 年前
        1
  •  1
  •   Dev    8 年前

    组件安装 在第一页。js收件人:

    componentDidMount(){
      this.loadImages()
    }
    

    for(var i=0;i<result.length;i++){
      that.state.images.push({"pano":result[i].pano,"name":result[i].name});
    }