J'utilise BrowserRouter de réagir à travers lequel je veux naviguer entre les pages. Initialement, il y a quatre images dans une page, et après avoir cliqué sur une image, l'image s'ouvre dans l'écran. Il y a un bouton de retour en dessous de cette image, qui ramène l'utilisateur au premier écran avec quatre images.Routeur ne fonctionne pas dans React
Le code est comme ce
app.js
import React from 'react';
import ReactDOM from 'react-dom';
import $ from 'jquery';
import {FirstPage} from './FirstPage.js';
import {BrowserRouter,Route,Router} from 'react-router-dom';
class App extends React.Component{
constructor(props){
super(props);
}
render(){
return(
<div>
<BrowserRouter>
<Route path="/" component={FirstPage}><FirstPage/></Route>
</BrowserRouter>
</div>
)
}
}
ReactDOM.render(<App/>,document.getElementById('container'));
FirstPage.js
class FirstPage extends React.Component{
constructor(props){
super(props);
this.state={
list:[],
images:[],
isClicked:false
}
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){
this.setState({
isClicked:true,
imageUrl:pano
})
}
render(){
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{
list.push(<Panorama imageUrl={this.state.imageUrl}/>)
}
return <div>{list}</div>;
}
}
module.exports={
FirstPage:FirstPage
}
Panorama.js
import 'aframe';
import 'aframe-particle-system-component';
import {Entity, Scene} from 'aframe-react';
import {Link} from 'react-router-dom';
class Panorama extends React.Component{
render(){
return(
<div>
<div className="pano">
<Scene>
<a-assets position="5 5 5">
<img id="myImage" src={this.props.imageUrl} crossorigin="anonymous"/>
</a-assets>
<a-sky src="#myImage"></a-sky>
</Scene>
</div>
<div className="goback"><Link to="/">Go back</Link></div>
</div>
)
}
}
module.exports={
Panorama:Panorama
}
Il n'y a pas d'erreurs pour le code ci-dessus, mais il le fait ne fonctionne pas aussi. La version du routeur de réaction est v4. Quel est le problème ci-dessus?
Je ne crois pas la composante de la route devrait avoir le composant FirstPage en son sein comme « "mais au lieu de –
avec à aussi, ça ne marche pas @Dream_Cap – Aayushi
Aussi je remarque que vous poussez directement à l'état des images qui je pense est une mauvaise pratique dans React. Peut-être essayer de déclarer un tableau dans une variable, puis de définir l'état avec le tableau? –