Dan Abramov
8 years ago
committed by
GitHub
3 changed files with 0 additions and 252 deletions
@ -1,218 +0,0 @@ |
|||||
<!DOCTYPE html> |
|
||||
<html> |
|
||||
<head> |
|
||||
<meta charset="utf-8"> |
|
||||
<title>React Perf Tutorial</title> |
|
||||
<style type="text/css"> |
|
||||
body { |
|
||||
background: #fff; |
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; |
|
||||
font-size: 15px; |
|
||||
line-height: 1.7; |
|
||||
margin: 0; |
|
||||
padding: 30px; |
|
||||
} |
|
||||
|
|
||||
a { |
|
||||
color: #4183c4; |
|
||||
text-decoration: none; |
|
||||
} |
|
||||
|
|
||||
a:hover { |
|
||||
text-decoration: underline; |
|
||||
cursor: pointer; |
|
||||
} |
|
||||
|
|
||||
code { |
|
||||
background-color: #f8f8f8; |
|
||||
border: 1px solid #ddd; |
|
||||
border-radius: 3px; |
|
||||
font-family: "Bitstream Vera Sans Mono", Consolas, Courier, monospace; |
|
||||
font-size: 12px; |
|
||||
margin: 0 2px; |
|
||||
padding: 3px 5px; |
|
||||
} |
|
||||
|
|
||||
h1, h2, h3, h4 { |
|
||||
font-weight: bold; |
|
||||
margin: 0 0 15px; |
|
||||
padding: 0; |
|
||||
} |
|
||||
|
|
||||
h1 { |
|
||||
border-bottom: 1px solid #ddd; |
|
||||
font-size: 2.5em; |
|
||||
} |
|
||||
|
|
||||
h2 { |
|
||||
border-bottom: 1px solid #eee; |
|
||||
font-size: 2em; |
|
||||
} |
|
||||
|
|
||||
h3 { |
|
||||
font-size: 1.5em; |
|
||||
} |
|
||||
|
|
||||
h4 { |
|
||||
font-size: 1.2em; |
|
||||
} |
|
||||
|
|
||||
p, ul { |
|
||||
margin: 15px 0; |
|
||||
} |
|
||||
|
|
||||
ul { |
|
||||
padding-left: 30px; |
|
||||
} |
|
||||
</style> |
|
||||
<script src="https://unpkg.com/react@latest/dist/react-with-addons.js"></script> |
|
||||
<script src="https://unpkg.com/react-dom@latest/dist/react-dom.js"></script> |
|
||||
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script> |
|
||||
</head> |
|
||||
<body> |
|
||||
<div> |
|
||||
Fire up your console <code>( Ctrl + Shift + i )</code> and type <code>Perf.start()</code> |
|
||||
then post a comment below and type <code>Perf.stop()</code> followed by <code>Perf.printWasted()</code>. |
|
||||
See <a href="https://facebook.github.io/react/docs/perf.html">documentation</a> for more details. Complete source code of this demo can be found on <a href="https://github.com/dhyey35/react-example-for-performance">github</a>. |
|
||||
</div> |
|
||||
<div id="content"></div> |
|
||||
<script type="text/babel"> |
|
||||
var Component = React.Component; |
|
||||
window.Perf = React.addons.Perf; |
|
||||
|
|
||||
const Comment = (props) => ( |
|
||||
<div className="comment"> |
|
||||
<h2 className="commentAuthor"> |
|
||||
{props.author} |
|
||||
</h2> |
|
||||
<span>{props.children.toString()}</span> |
|
||||
</div> |
|
||||
) |
|
||||
|
|
||||
class CommentBox extends Component { |
|
||||
|
|
||||
constructor() { |
|
||||
super() |
|
||||
this.state = { |
|
||||
data: [] |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
componentDidMount() { |
|
||||
this.loadComments() |
|
||||
} |
|
||||
|
|
||||
loadComments() { |
|
||||
let initialComments = [ |
|
||||
{ |
|
||||
author: "Dan Abramov", |
|
||||
id: 0, |
|
||||
text: "React is awesome" |
|
||||
}, |
|
||||
{ |
|
||||
author: "Kevin Lacker", |
|
||||
id: 1, |
|
||||
text: "I Love React" |
|
||||
}, |
|
||||
{ |
|
||||
author: "Dhyey Thakore", |
|
||||
id: 2, |
|
||||
text: "Welcome to React Performance Example" |
|
||||
} |
|
||||
] |
|
||||
this.setState({data: initialComments}) |
|
||||
} |
|
||||
|
|
||||
handleCommentSubmit(comment) { |
|
||||
let comments = this.state.data |
|
||||
|
|
||||
comment.id = Date.now() |
|
||||
comments.unshift(comment) |
|
||||
this.setState({data: comments}) |
|
||||
} |
|
||||
|
|
||||
render() { |
|
||||
return ( |
|
||||
<div className="commentBox"> |
|
||||
<h1>Comments</h1> |
|
||||
<CommentForm onCommentSubmit={this.handleCommentSubmit.bind(this)} /> |
|
||||
<CommentList data={this.state.data} /> |
|
||||
</div> |
|
||||
) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class CommentList extends Component { |
|
||||
render() { |
|
||||
let commentNodes = this.props.data.map(comment => ( |
|
||||
<Comment author={comment.author} key={comment.id}> |
|
||||
{comment.text} |
|
||||
</Comment> |
|
||||
) |
|
||||
) |
|
||||
|
|
||||
return ( |
|
||||
<div className="commentList"> |
|
||||
{commentNodes} |
|
||||
</div> |
|
||||
) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
class CommentForm extends Component { |
|
||||
constructor() { |
|
||||
super() |
|
||||
this.state = { |
|
||||
author: '', |
|
||||
text: '' |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
handleAuthorChange(e) { |
|
||||
this.setState({author: e.target.value}) |
|
||||
} |
|
||||
|
|
||||
handleTextChange(e) { |
|
||||
this.setState({text: e.target.value}) |
|
||||
} |
|
||||
|
|
||||
handleSubmit(e) { |
|
||||
e.preventDefault() |
|
||||
let author = this.state.author.trim() |
|
||||
let text = this.state.text.trim() |
|
||||
if (!text || !author) { |
|
||||
return |
|
||||
} |
|
||||
this.props.onCommentSubmit({author: author, text: text}) |
|
||||
this.setState({author: '', text: ''}) |
|
||||
} |
|
||||
|
|
||||
render() { |
|
||||
return ( |
|
||||
<form className="commentForm" onSubmit={this.handleSubmit.bind(this)}> |
|
||||
<input |
|
||||
type="text" |
|
||||
placeholder="Your name" |
|
||||
value={this.state.author} |
|
||||
onChange={this.handleAuthorChange.bind(this)} |
|
||||
/> |
|
||||
<input |
|
||||
type="text" |
|
||||
placeholder="Say something..." |
|
||||
value={this.state.text} |
|
||||
onChange={this.handleTextChange.bind(this)} |
|
||||
/> |
|
||||
<input type="submit" value="Post" /> |
|
||||
</form> |
|
||||
) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
|
|
||||
ReactDOM.render( |
|
||||
<CommentBox />, |
|
||||
document.getElementById('content') |
|
||||
) |
|
||||
</script> |
|
||||
</body> |
|
||||
</html> |
|
Before Width: | Height: | Size: 62 KiB |
Loading…
Reference in new issue