Skip to content

Commit

Permalink
Flag to prevent registration of events facebook#954
Browse files Browse the repository at this point in the history
Flag on EventPluginHub to disable event registration.
For the purposes of server side rendering not registering events.
Could be cleaner if used a transaction with an optional step.
Alternatively could be an ExecutionEnvironment variable.
Could also be flag passed to mount component, however non DOM
components have no comprehension of events.
  • Loading branch information
Glenn Murray committed Jan 24, 2014
1 parent d422ebd commit 0b5ad13
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
5 changes: 5 additions & 0 deletions src/environment/ReactServerRendering.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ var ReactComponent = require('ReactComponent');
var ReactInstanceHandles = require('ReactInstanceHandles');
var ReactMarkupChecksum = require('ReactMarkupChecksum');
var ReactReconcileTransaction = require('ReactReconcileTransaction');
var ExecutionEnvironment = require('ExecutionEnvironment');
var EventPluginHub = require('EventPluginHub');

var invariant = require('invariant');

Expand All @@ -48,7 +50,10 @@ function renderComponentToString(component, callback) {
transaction.reinitializeTransaction();
try {
transaction.perform(function() {
var registrationEnabled = EventPluginHub.isRegistrationEnabled();
EventPluginHub.setRegistrationEnabled(false);
var markup = component.mountComponent(id, transaction, 0);
EventPluginHub.setRegistrationEnabled(registrationEnabled);
markup = ReactMarkupChecksum.addChecksumToMarkup(markup);
callback(markup);
}, null);
Expand Down
21 changes: 18 additions & 3 deletions src/event/EventPluginHub.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ var isEventSupported = require('isEventSupported');
*/
var listenerBank = {};

/**
* Allow disabling listener registration
*/
var registrationEnabled = true;

/**
* Internal queue of events that have accumulated their dispatches and are
* waiting to have their dispatches executed.
Expand Down Expand Up @@ -98,6 +103,14 @@ function validateInstanceHandle() {
*/
var EventPluginHub = {

setRegistrationEnabled: function(enabled) {
registrationEnabled = enabled;
},

isRegistrationEnabled: function() {
return registrationEnabled;
},

/**
* Methods for injecting dependencies.
*/
Expand Down Expand Up @@ -158,9 +171,11 @@ var EventPluginHub = {
console.warn('This browser doesn\'t support the `onScroll` event');
}
}
var bankForRegistrationName =
listenerBank[registrationName] || (listenerBank[registrationName] = {});
bankForRegistrationName[id] = listener;
if(registrationEnabled) {
var bankForRegistrationName =
listenerBank[registrationName] || (listenerBank[registrationName] = {});
bankForRegistrationName[id] = listener;
}
},

/**
Expand Down

0 comments on commit 0b5ad13

Please sign in to comment.