我正在用Webpack創建一個同構應用程序,React-Engine,使用React-Engine example表示。我終於完成了,所以代碼正確呈現,但我遇到了一個新問題,標準事件沒有解僱。我點擊按鈕,「clicked」應該寫入控制檯,但它不起作用。代碼在bundle.js中,我在函數中添加了一個斷點,但沒有任何事情發生。這不是我的第一個React應用程序,但這是我第一次使用React-Engine,所以我敢打賭它與我使用React-Engine和React-Router的方式有關。 public/index.js中的函數,我猜想是加載新的視圖文件,在我的項目中永遠不會調用。 你能明白爲什麼我的活動不會開火嗎?爲什麼React事件不會觸發?
Server.js
require('node-jsx').install();
var express = require('express'); // call express
var app = express(); // define our app using express
...
var renderer = require('react-engine');
...
var engine = renderer.server.create();
app.engine('.jsx', engine);
app.set('views', __dirname + '/public/views');
app.set('view engine', 'jsx');
app.set('view', renderer.expressView);
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
res.render('app', {
title: 'React Engine Express Sample App',
});
});
公共/ index.js
var client = require('react-engine').client;
var Routes = require('./routes.jsx');
var AppHandler = require('./views/appHandler.jsx');
// boot options
var options = {
routes: Routes,
// supply a function that can be called
// to resolve the file that was rendered.
viewResolver: function(viewName) {
console.log(viewName)
return require('./views/' + viewName);
}
};
document.addEventListener('DOMContentLoaded', function onLoad() {
client.boot(options);
});
公共/ routes.js
var React = require('react');
var Router = require('react-router');
var AppHandler = require('./views/appHandler.jsx');
console.log(AppHandler);
//var Account = require('./views/account.jsx');
var routes = module.exports = (
<Router.Route path='/' handler={AppHandler}></Router.Route>
);
公共/視圖/ appHandler.jsx
var React = require('react');
var RouteHandler = Router.RouteHandler;
var App = require('./app.jsx');
var AppHandler = React.createClass({
render: function() {
return (
<App {...this.props} ></App>
);
}
});
module.exports = AppHandler;
公共/視圖/ app.jsx
var React = require('react');
module.exports = React.createClass({
clicked: function() {
console.log("clicked");
},
render: function render() {
return (
<html>
<body>
{this.props.title}
<button onClick={this.clicked}>button</button>
</body>
<script src='/bundle.js'></script>
</html>
);
}
});
當您點擊按鈕時,會執行任何操作(例如一個錯誤)記錄到控制檯?你能確認你看到按鈕嗎? – warchinal
我可以看到按鈕,我可以看到this.props.title。沒有任何記錄到控制檯,並且當我在該函數上放置斷點時,什麼都不會發生。 – EasilyBaffled
爲了幫助診斷問題,我強烈建議下載Facebook的反應[dev-tools](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en) – warchinal