RealJS 5 5 5日目
#6.0 Getting Ready for the Router
npm i react-router-dom
#6.1 Building the Router
-path:接続パス
-component:実際のパス
-exact
このアトリビュートを設定しない場合は、path=「/」とpath=「/about」が同じ「/」を含むため、一緒にレンダリングされます.したがって、「true」に設定する必要があります.
import React from "react";
import {HashRouter, Route} from "react-router-dom";
import Home from "./routes/Home";
import About from "./routes/About";
import "./App.css"
function App(){
return (
<HashRouter>
<Route path="/" exact={true} component={Home} />
<Route path="/about" component={About} />
</HashRouter>
);
}
export default App;
#6.2 Building the Navigation
import React from "react";
import {Link} from "react-router-dom";
import "./Navigation.css";
function Navigation(){
return (
<div className="nav">
<Link to="/">Home</Link>
<Link to="/about">About</Link>
</div>
);
}
export default Navigation;
function App(){
return (
<HashRouter>
<Navigation />
<Route path="/" exact={true} component={Home} />
<Route path="/about" component={About} />
</HashRouter>
);
}
#6.3 Sharing Props Between Routes
<Link to=""><Link>
stringではなくobjectに移動して支柱を渡すことができます.import React from "react";
import PropTypes from "prop-types";
import {Link} from "react-router-dom";
import "./Movies.css";
function Movie({id, year, title, summary, poster, genres}){
return (
<Link to={{
pathname: "/movie_detail",
state: {
year,
title,
summary,
poster,
genres
}
}}
>
<div className="movie">
<img src={poster} alt={title} title={title}/>
<div className="movie__data">
<h3 className="movie__title">{title}</h3>
<h5 className="movie__year">{year}</h5>
<ul className="movie__genres">
{genres.map((genre, index) => ( //map함수에 index 자동 생성
<li key={index} className="genres__genre">{genre}</li> //key값 추가해줘야함
))}
</ul>
<p className="movies__summary">{summary.slice(0,180)}...</p>
</div>
</div>
</Link>
);
}
Movie.propTypes = {
id: PropTypes.number.isRequired,
year: PropTypes.number.isRequired,
title: PropTypes.string.isRequired,
summary: PropTypes.string.isRequired,
poster: PropTypes.string.isRequired,
genres: PropTypes.arrayOf(PropTypes.string).isRequired
};
export default Movie;
#6.4 Redirecting
import React from "react";
class Detail extends React.Component{
componentDidMount(){
const {location, history} = this.props;
if(location.state === undefined){
history.push("/");
}
}
render(){
const {location} = this.props;
if(location.state){
return <h1>{location.state.title}</h1>
}else{
return null;
}
}
}
export default Detail;
Reference
この問題について(RealJS 5 5 5日目), 我々は、より多くの情報をここで見つけました https://velog.io/@pjoon357/ReactJS-5일차テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol