Skip to content

Commit 5e47b46

Browse files
committed
Use pure components for blog, fix bug in sidebar
1 parent c656576 commit 5e47b46

File tree

3 files changed

+39
-67
lines changed

3 files changed

+39
-67
lines changed

site/_core/BlogLayout.js

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,12 @@ var Site = require('./Site');
1111
var BlogSidebar = require('./BlogSidebar');
1212
var BlogPost = require('./BlogPost');
1313

14-
var BlogLayout = React.createClass({
15-
render: function() {
16-
var page = this.props.page;
17-
var site = this.props.site;
18-
return (
19-
<Site section="blog" title={page.title} page={page}>
20-
<section>
21-
<div className="documentationContent">
22-
<BlogPost post={page} isPermalink={true} />
23-
<BlogSidebar site={site} page={page} />
24-
</div>
25-
</section>
26-
</Site>
27-
);
28-
}
29-
});
30-
31-
module.exports = BlogLayout;
14+
module.exports = ({ page, site }) =>
15+
<Site section="blog" title={page.title} page={page}>
16+
<section>
17+
<div className="documentationContent">
18+
<BlogPost post={page} isPermalink={true} />
19+
<BlogSidebar site={site} page={page} />
20+
</div>
21+
</section>
22+
</Site>

site/_core/BlogPost.js

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,13 @@
99
var React = require('react');
1010
var Marked = require('./Marked');
1111

12-
var BlogPost = React.createClass({
13-
render: function() {
14-
var post = this.props.post;
15-
var isPermalink = this.props.isPermalink;
16-
return (
17-
<div className="inner-content">
18-
<h1>{isPermalink ? post.title : <a href={post.url}>{post.title}</a>}</h1>
19-
<p>{new Date(post.date).toLocaleDateString()} by {post.byline}</p>
20-
{post.guestBio ? null : <hr />}
21-
{post.guestBio && <p className="guestBio">{
22-
`This guest article contributed by ${post.byline}, ${post.guestBio}.`
23-
}</p>}
24-
<Marked>{post.content}</Marked>
25-
</div>
26-
);
27-
}
28-
});
29-
30-
module.exports = BlogPost;
12+
module.exports = ({ post, isPermalink }) =>
13+
<div className="inner-content">
14+
<h1>{isPermalink ? post.title : <a href={post.url}>{post.title}</a>}</h1>
15+
<p>{new Date(post.date).toLocaleDateString()} by {post.byline}</p>
16+
{post.guestBio ? null : <hr />}
17+
{post.guestBio && <p className="guestBio">{
18+
`This guest article contributed by ${post.byline}, ${post.guestBio}.`
19+
}</p>}
20+
<Marked>{post.content}</Marked>
21+
</div>

site/_core/BlogSidebar.js

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,23 @@
99
var path = require('path');
1010
var React = require('react');
1111

12-
var BlogSidebar = React.createClass({
13-
render: function() {
14-
var posts = this.props.site.files.blog
15-
.filter(file => !file.draft && path.extname(file.relPath) === '.md')
16-
.sort((a, b) => a.date < b.date);
17-
return (
18-
<div className="nav-docs">
19-
<div className="nav-docs-section">
20-
<h3>Subscribe</h3>
21-
<a rel="home" type="application/rss+xml" href="/blog/rss.xml">RSS</a>
22-
</div>
23-
<div className="nav-docs-section">
24-
<h3>Recent Posts</h3>
25-
<ul>
26-
{posts.map(post =>
27-
<li key={post.permalink}>
28-
{post === this.props.file ?
29-
post.title :
30-
<a href={post.url}>{post.title}</a>
31-
}
32-
</li>
33-
)}
34-
</ul>
35-
</div>
36-
</div>
37-
);
38-
}
39-
});
40-
41-
module.exports = BlogSidebar;
12+
module.exports = ({ site, page }) =>
13+
<div className="nav-docs">
14+
<div className="nav-docs-section">
15+
<h3>Subscribe</h3>
16+
<a rel="home" type="application/rss+xml" href="/blog/rss.xml">RSS</a>
17+
</div>
18+
<div className="nav-docs-section">
19+
<h3>Recent Posts</h3>
20+
<ul>
21+
{site.files.blog
22+
.filter(file => !file.draft && path.extname(file.relPath) === '.md')
23+
.sort((a, b) => a.date < b.date)
24+
.map(post =>
25+
<li key={post.permalink}>
26+
{post === page ? post.title : <a href={post.url}>{post.title}</a>}
27+
</li>
28+
)}
29+
</ul>
30+
</div>
31+
</div>

0 commit comments

Comments
 (0)