Created
November 29, 2019 15:08
-
-
Save u88803494/e754a45c0a88354b7f86ac85168d6e8d to your computer and use it in GitHub Desktop.
w22 的 blog 教學加上 router
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.about { | |
background: rgba(0, 255, 0 , 0.3); | |
min-height: calc(100vh - 74px); | |
} | |
.about > div { | |
font-size: 36px; | |
margin: 10px; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from 'react'; | |
import './About.css'; | |
class About extends Component { | |
render() { | |
return ( | |
<div className="about"> | |
<div>About</div> | |
<div>hello</div> | |
</div> | |
); | |
} | |
} | |
export default About; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.App { | |
text-align: center; | |
} | |
.page { | |
margin-top: 74px; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from 'react'; | |
import './App.css'; | |
import Nav from './nav'; | |
import About from './about'; | |
import Home from './home'; | |
import PostList from './post_list'; | |
import Post from './post'; | |
import { BrowserRouter as Router, Route } from "react-router-dom"; | |
class App extends Component { | |
render() { | |
return ( | |
<Router> | |
<div className="App" > | |
<Nav /> | |
<div className="page"> | |
<Route exact path="/" component={Home} /> | |
<Route exact path="/post" component={PostList} /> | |
<Route path="/about" component={About} /> | |
<Route path="/post/:postId" component={Post} /> | |
</div> | |
</div> | |
</Router> | |
); | |
} | |
} | |
export default App; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from 'react'; | |
import './home.css'; | |
const style = { | |
homepage: { | |
fontSize: '40px', | |
paddingTop: '10px', | |
} | |
} | |
class Home extends Component { | |
render() { | |
return ( | |
<div className="home"> | |
<div style={style.homppage}>I am homepage</div> | |
</div> | |
); | |
} | |
} | |
export default Home; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from 'react'; | |
import { Link } from 'react-router-dom'; | |
import axios from 'axios'; | |
class Post extends Component { | |
constructor(props) { | |
super(props); | |
this.state = { | |
post: {}, | |
} | |
} | |
componentDidMount() { | |
const { postId } = this.props.match.params; | |
axios.get('https://jsonplaceholder.typicode.com/posts/' + postId) | |
.then(res => { | |
this.setState({ | |
post: res.data, | |
}) | |
}) | |
} | |
render() { | |
const { post } = this.state; | |
return ( | |
<div> | |
<h1>POST</h1> | |
<Link to="/post"><button> back</button> </Link> | |
<div> | |
<h1>{post.title ? post.title : 'Loading'}</h1> | |
<p>{post.body}</p> | |
</div> | |
</div> | |
); | |
} | |
} | |
export default Post; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from 'react'; | |
import { withRouter } from 'react-router-dom'; | |
import axios from 'axios' | |
import './Post.css'; | |
class PostList extends Component { | |
constructor(props) { | |
super(props); | |
this.state = { | |
posts: [], | |
} | |
} | |
componentDidMount() { | |
axios.get('https://jsonplaceholder.typicode.com/posts') | |
.then(res => { | |
this.setState({ | |
posts: res.data, | |
}) | |
}) | |
} | |
render() { | |
const { posts } = this.state; | |
const { history } = this.props; | |
return ( | |
<div> | |
<h1>POST</h1> | |
<div className="post-list"> | |
{posts.map(post => ( | |
<div className="post-item" key={post.id}> | |
<div className="post-item__id" onClick={() => { | |
history.push("/post/" + post.id) | |
}}>{post.id}</div> | |
<div className="post-item__title"> {post.title}</div> | |
<div className="post-item__body">{post.body}</div> | |
</div> | |
))} | |
</div> | |
</div> | |
); | |
} | |
} | |
export default withRouter(PostList); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.post-list { | |
display: flex; | |
flex-wrap: wrap; | |
margin: auto; | |
margin-left: 10px; | |
} | |
.post-item { | |
position: relative; | |
width: 200px; | |
height: 200px; | |
background: rgba(255, 255, 0, 0.1); | |
margin-right: 10px; | |
margin-bottom: 10px; | |
overflow: hidden; | |
} | |
.post-item__id { | |
position: absolute; | |
left: 0; | |
right: 0; | |
width: 20px; | |
height: 20px; | |
display: flex; | |
justify-content: center; | |
align-items: center; | |
background: red; | |
} | |
.post-item__title { | |
margin-top: 15px; | |
font-size: 30px; | |
white-space: nowrap; | |
text-overflow: ellipsis; | |
overflow: hidden; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment