Mar*_*vez 4 javascript random reactjs
我刚开始在工作中学习React,我需要使用React构建一个博客.我需要将随机帖子显示为"推荐帖子",在做了一些研究后我发现了一个可能的解决方案,使用Math.random()但我无法弄清楚如何在我的组件中实现它.
这是我的代码:
RecommendedPost/index.js
import React from 'react';
import { Link } from 'react-router';
class RecommendedPosts extends React.Component {
render() {
return (
<ul>
{this.props.posts.map((post, idx) => {
return (
<li key={idx}>
<p>{post.title}</p>
<p>{post.text}</p>
<p>{post.category}</p>
<Link to={`/blog/post-1/:${post.id}`}>Weiter lesen</Link>
</li>
);
})}
</ul>
);
}
}
RecommendedPosts.propTypes = {
posts: React.PropTypes.array,
};
export default RecommendedPosts;
Run Code Online (Sandbox Code Playgroud)
然后我在我的容器中使用这个组件:BlogPage/SinglePostPage/index.js
import React from 'react';
// ...other imported stuff
import RecommendedPosts from 'components/Blog/RecommendedPosts';
class PostPage extends React.Component {
render() {
// dummy-recomended-posts
const posts = [
{
id: 1,
title: 'How to Cook Blue Meth',
description: 'Lorem ipsum dolor sit amet, turpis at, elit',
thump: 'thump.jpg',
hero: '/img/',
category: 'k1',
fullname: 'Walter White',
published: '10.05.2016, 15:30pm',
},
{
id: 2,
title: 'Passenger',
description: 'Lorem ipsum dolor sit amet, turpis at, elit',
thump: 'thump.jpg',
hero: '/img/',
category: 'k2',
fullname: 'Chino Moreno',
published: '10.05.2016, 15:30pm',
},
// ...and more dummy posts(about 7)
];
return (
<div>
// here, I pass the posts array to my component
<RecommendedPosts posts={posts} />
</div>
);
}
}
}
export default connect(null, mapDispatchToProps)(PostPage);
Run Code Online (Sandbox Code Playgroud)
我的想法是使用id作为ref来随机渲染帖子,但我又找不到方法.
希望有人可以帮助我,如果答案对每个人来说都太明显了,那就很抱歉.
Grg*_*gur 11
我继续为你创造了一个有效的例子
import React from 'react';
import { Link } from 'react-router';
function shuffleArray(array) {
let i = array.length - 1;
for (; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
class RecommendedPosts extends React.Component {
render() {
const shuffledPosts = shuffleArray(this.props.posts);
return (
<ul>
{shuffledPosts.map((post) => {
return (
<li key={post.id}>
<p>{post.title}</p>
<p>{post.text}</p>
<p>{post.category}</p>
<Link to={`/blog/post-1/:${post.id}`}>Weiter lesen</Link>
</li>
);
})}
</ul>
);
}
}
RecommendedPosts.propTypes = {
posts: React.PropTypes.array,
};
export default RecommendedPosts;
Run Code Online (Sandbox Code Playgroud)
奖金提示 - 由于您没有使用状态或生命周期,您可以创建一个更简单的功能组件:
import React from 'react';
import { Link } from 'react-router';
function shuffleArray(array) {
let i = array.length - 1;
for (; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
}
function RecommendedPosts({ posts }) {
const shuffledPosts = shuffleArray(posts);
return (
<ul>
{shuffledPosts.map((post) => {
return (
<li key={post.id}>
<p>{post.title}</p>
<p>{post.text}</p>
<p>{post.category}</p>
<Link to={`/blog/post-1/:${post.id}`}>Weiter lesen</Link>
</li>
);
})}
</ul>
);
}
RecommendedPosts.propTypes = {
posts: React.PropTypes.array,
};
export default RecommendedPosts;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9948 次 |
最近记录: |