首先,我是Node.js和React的新手,我一直在努力理解客户端渲染和服务器端渲染之间的区别。
我使用以下代码设置了一个带有express的node.js服务器:
var express = require('express');
var React = require('react');
var app = express();
app.set('port', (process.env.PORT || 5000));
app.use(express.static(__dirname + '/public'));
app.set('views', __dirname + '/views');
app.set('view engine', 'jsx');
app.engine('jsx', require('express-react-views').createEngine());
app.get('/', function(request, response) {
response.render('pages/index');
});
app.listen(app.get('port'), function() {
console.log('Node app is running on port', app.get('port'));
});
我的问题是我的index.jsx是在服务器端呈现的,我希望它在客户端正确使用React。
这是我的index.jsx:
var React = require('react');
class index extends React.Component {
constructor (props) {
super(props)
this.state = {
name: ''
};
}
componentDidMount() {
this.db()
}
db() {
this.setState({
name: 'Marvin'
})
}
render () {
return (
<div>
<h2>{this.state.name}</h2>
</div>
);
}
}
module.exports = index
我的componentDidMount()没有被触发,因为它在服务器端。那么如何使用我的设置在客户端渲染呢?