var React = require("react");
var Router = require("react-router");
var Route = Router.Route;
var DefaultRoute = Router.DefaultRoute;
var App = require("./app.jsx");
var Index = require("./views/index.jsx");
var TopicDetail = require("./views/topic/detail.jsx");
var UserDetail = require("./views/user/detail.jsx");
var routes = (
);
module.exports = routes;
都是些基本的路由配置
component/app.jsx
再來看下入口組件
var React = require("react");
var Router = require("react-router");
var Layout = require("./views/layouts/default.jsx");
var RouteHandler = Router.RouteHandler;
module.exports = React.createClass({
render: function () {
var data = this.props.data;
return (
)
}
});
Layout就是我們的布局了,相同的代碼總要抽出來的。
var React = require("react");
var constants=require("../../../lib/constants");
var Footer=require("../partials/footer.jsx");
module.exports = React.createClass({
render: function render() {
return (
{this.props.title}
{this.props.children}
);
}
});
component/views/index.jsx
這里就是業(yè)務(wù)代碼了
var React = require("react");
var Router = require("react-router");
var $ = require("jquery");
var Navbar = require("./partials/navbar.jsx");
var queryString = require("query-string");
var utils=require("../component/utils");
var Link = Router.Link;
var Label = React.createClass({
render: function () {
var tab = this.props.tab;
var data = this.props.data;
if (data.top) {
return 置頂;
}
if (data.good) {
return 精華;
}
if (!tab || tab === "all") {
if (data.tab === "share") {
return 分享;
}
if (data.tab === "ask") {
return 問答;
}
if (data.tab === "job") {
return 招聘;
}
}
return null;
}
});
module.exports = React.createClass({
getInitialState: function () {
return {
data: this.props.data || [],
page: 1
}
},
componentWillReceiveProps: function (nextProps) {
this.setState({
data: nextProps.data,
page: 1
});
},
componentDidMount: function () {
var loading = false;
$(window).on("scroll", function () {
var fromBottom = $(document).height() - $(window).height() - $(window).scrollTop();
if (fromBottom <= 10 && !loading) {
loading = true;
var query = queryString.parse(location.search);
query.page = this.state.page + 1;
$.get(location.pathname + "?" + queryString.stringify(query), function (response) {
this.setState({
data: this.state.data.concat(response.data),
page: this.state.page + 1
}, function () {
loading = false;
});
}.bind(this));
}
}.bind(this));
},
render: function () {
var tab = this.props.query.tab;
return (