react.htm 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <html>
  2. <head>
  3. <title>Hello React</title>
  4. <script src="http://fb.me/react-0.5.0.js"></script>
  5. <script src="http://fb.me/JSXTransformer-0.5.0.js"></script>
  6. </head>
  7. <body>
  8. <div id="content"></div>
  9. <script type="text/jsx">
  10. /** @jsx React.DOM */
  11. var User = React.createClass({
  12. render: function() {
  13. console.log(this.props);
  14. props = JSON.stringify(this.props.tokens);
  15. nested = JSON.stringify(this.props.nested);
  16. return (
  17. <div><h2>{this.props.id}</h2>
  18. Email: {this.props.email},<br/> Tokens: {props},<br/> Nested: {nested}</div> ); } });
  19. var CommentList = React.createClass({
  20. render: function() {
  21. var users = this.props.data.map(function (item) {
  22. return <User id={item.id} email={item.email} tokens={item.proplist} nested={item.nested_proplists}/>; });
  23. return (<div class="commentList">{users}</div>); }
  24. });
  25. var CommentBox = React.createClass({
  26. getInitialState: function() { return {data: []}; },
  27. loadData: function() {
  28. var p = this;
  29. var request = new XMLHttpRequest;
  30. request.open('GET', this.props.url, true);
  31. request.onload = function() {
  32. if (request.status >= 200 && request.status < 400) {
  33. data = JSON.parse(request.responseText);
  34. request = new XMLHttpRequest;
  35. p.setState({data: data.users});
  36. } else {
  37. console.log("Request: " + request);
  38. }
  39. };
  40. request.send();
  41. },
  42. componentWillMount: function() { this.loadData(); },
  43. render: function() {
  44. return (<div><h1>Users</h1><CommentList data={this.state.data}/></div> ); }});
  45. React.renderComponent(
  46. <CommentBox url="http://localhost:8000/rest/users" pollInterval={5000}/>,
  47. document.getElementById('content'));
  48. </script>
  49. </body>
  50. </html>