我正在尝试使用React与我的Express后端。目前,我使用React作为我的模板语言。React组件只渲染一次
我的意见是.jsx文件。
/* Express */
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const session = require('express-session');
...
/* Express application parameters */
app
.set('views', __dirname + '/views')
.set('view engine', 'jsx')
.engine('jsx', require('express-react-views').createEngine())
.use(bodyParser.urlencoded({ extended: false }))
.use(sessionStorage)
.use(express.static('public'));
// Express routing defined in ./routes/index.js
require('./routes')(app);
index.js
/* Express routing */
module.exports = function (app) {
app.get('/subscribe', require('./subscribe').get);
app.post('/subscribe', require('./subscribe').post);
app.get('/', require('./login').get);
app.post('/', require('./login').post);
app.all('/userlist', require('./home').all);
app.get('/lobby', require('./lobby').get);
app.get('/playdario', require('./game').get);
app.post('/playdario', require('./game').post);
app.all('/logout', require('./logout').all);
}
这是我订阅页面路由处理:
subscribe.js
exports.get = (req, res) => {
res.render('subscribe', { 'title': 'Subscription' });
}
我想作为一个测试(比如React教程)每秒刷新一个时钟组件。
subscribe.jsx
var React = require('react');
var ReactDOM = require('react-dom');
var DefaultLayout = require('./layouts/default');
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = { date: new Date() };
}
componentDidMount() {
this.timerID = setInterval(
() => this.tick(),
1000
);
}
componentWillUnmount() {
clearInterval(this.timerID);
}
tick() {
this.setState({
date: new Date()
});
}
render() {
return (
<DefaultLayout>
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
</DefaultLayout>
);
}
}
module.exports = Clock;
所有的我的意见是通过其中包含的HTML标记默认组件组成。
default.jsx
var React = require('react');
class DefaultLayout extends React.Component {
render() {
return (
<html>
<head><title>{this.props.title}</title></head>
<body>
{this.props.children}
</body>
</html>
);
}
}
module.exports = DefaultLayout;
但问题是,时钟显示只有一次,当我到达的页面。但时钟根本不令人耳目一新。我尝试了另一个例子,用一个改变文本值的按钮,但它不工作...
必须在我的res.render中使用** .jsx *文件吗?当我发送像我在我的项目开始时一样的HTML文件,我没有找到如何通过我的HTML文件发送信息像我可以做的像.twig或.jsx的意见... ...快速发短信
我什么做错了吗?
为什么不试试react-dom的renderToString方法.. –