diff --git a/injected/DOMHost.js b/injected/DOMHost.js index 8be4293a37..6b02f13d39 100644 --- a/injected/DOMHost.js +++ b/injected/DOMHost.js @@ -183,8 +183,13 @@ function getDOMNode(instance, depth, diveTo) { // TODO: Better duck checking, of what is a text component if (ReactHost.isTextComponent(instance)) { - // ReactTextComponent - return getTextNode(instance.props.text, bindNode(instance)); + if (typeof instance.props === "string") { + // React 0.11+ + return getTextNode(instance.props, bindNode(instance)); + } else { + // React 0.10 + return getTextNode(instance.props.text, bindNode(instance)); + } } var id = bindNode(instance); @@ -393,7 +398,12 @@ function parseValue(stringValue, currentType) { DOMHost.setNodeValue = function(id, value) { var instance = instanceCache[id]; var currentValue; - if (ReactHost.isTextComponent(instance)) { + if (ReactHost.isTextComponent(instance) && + typeof instance.props === "string") { + // React 0.11+ + instance.props = parseValue(value, typeof instance.props); + } else if (ReactHost.isTextComponent(instance)) { + // React 0.10+ instance.props.text = parseValue(value, typeof instance.props.text); } else { instance.props.children = parseValue(value, typeof instance.props.children); diff --git a/injected/ReactHost.js b/injected/ReactHost.js index dc3a8d9a17..8650e3dbe2 100644 --- a/injected/ReactHost.js +++ b/injected/ReactHost.js @@ -97,7 +97,12 @@ var ReactHost = { isTextComponent: function(component) { if (!ReactTextComponent) return false; - return component instanceof ReactTextComponent; + // ReactTextComponent is the type in React 0.10 but is the element factory + // in React 0.11+, so check both + return component instanceof ReactTextComponent || ( + ReactTextComponent.type && + component instanceof ReactTextComponent.type + ); }, _unwrapMethod: function(method, targetEventName) {