From 65febbbc52de13dff1c7ad6f3ee870dc8c7a6fe1 Mon Sep 17 00:00:00 2001 From: Nicolas Gallagher Date: Tue, 10 Jan 2017 17:28:39 -0800 Subject: [PATCH] [fix] error in setNativeProps when no style Close #325 Close #327 --- src/components/TextInput/index.js | 4 ++-- src/modules/NativeMethodsMixin/index.js | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/TextInput/index.js b/src/components/TextInput/index.js index 2432b300..5356de51 100644 --- a/src/components/TextInput/index.js +++ b/src/components/TextInput/index.js @@ -1,12 +1,12 @@ import applyLayout from '../../modules/applyLayout'; import applyNativeMethods from '../../modules/applyNativeMethods'; +import NativeMethodsMixin from '../../modules/NativeMethodsMixin'; import createDOMElement from '../../modules/createDOMElement'; import findNodeHandle from '../../modules/findNodeHandle'; import StyleSheet from '../../apis/StyleSheet'; import Text from '../Text'; import TextareaAutosize from 'react-textarea-autosize'; import TextInputState from './TextInputState'; -import UIManager from '../../apis/UIManager'; import View from '../View'; import { Component, PropTypes } from 'react'; @@ -116,7 +116,7 @@ class TextInput extends Component { } setNativeProps(props) { - UIManager.updateView(this._node, props, this); + NativeMethodsMixin.setNativeProps.call(this, props); } componentDidMount() { diff --git a/src/modules/NativeMethodsMixin/index.js b/src/modules/NativeMethodsMixin/index.js index d519442d..576fe7e6 100644 --- a/src/modules/NativeMethodsMixin/index.js +++ b/src/modules/NativeMethodsMixin/index.js @@ -10,6 +10,7 @@ import findNodeHandle from '../findNodeHandle'; import StyleRegistry from '../../apis/StyleSheet/registry'; import UIManager from '../../apis/UIManager'; +const emptyObject = {}; const REGEX_CLASSNAME_SPLIT = /\s+/; const REGEX_STYLE_PROP = /rn-(.*):.*/; @@ -83,7 +84,7 @@ const NativeMethodsMixin = { const domClassList = [ ...node.classList ]; // Resolved state - const resolvedProps = StyleRegistry.resolve(nativeProps.style); + const resolvedProps = StyleRegistry.resolve(nativeProps.style) || emptyObject; const resolvedClassList = classNameToList(resolvedProps.className); // Merged state @@ -94,7 +95,8 @@ const NativeMethodsMixin = { // Only pass on a class name when the style is unchanged. domClassList.forEach((c) => { const prop = getStyleProp(c); - if (resolvedProps.className.indexOf(prop) === -1) { + const className = resolvedProps.className; + if (!className || className.indexOf(prop) === -1) { classList.push(c); } });