2016-01-13 4 views
7

Reactネイティブコンポーネントでは、スプレッド演算子が小道具割り当てで使用されている場合、「この環境では、割り当て対象はオブジェクトでなければなりません。スローされます。React Nativeコンポーネントのプロパティの割り当てでスプレッド演算子を使用してパフォーマンスを最適化できないのはなぜですか?

例えば、関数レンダリング

const { style } = props; 
    return (
    <View style={{borderWidth: 1, ...style}}> 

enter image description here

一方

const { style } = props; 
    return (
    <View style={{borderWidth: 1, paddingLeft: 1}}> 

作品提供します。スプレッド構文がパフォーマンスに影響するのはなぜですか?

+3

これは、次のような配列でこれを実行しようとしましたか? '? – zvona

+0

ええと、https://facebook.github.io/react/tips/inline-styles.htmlは 'In Reactではインラインスタイルはキーが指定されたオブジェクトで指定されているためですラクダのスタイル名のケースバージョン[...]。 ' – Christine

+0

しかし、それを試して、それは動作します!奇妙さ。 – Christine

答えて

4

実際には、StyleSheet.create()を使用すると、スタイルプロパティが子コンポーネントに渡されたときに数値になることが分かります。

2

the accepted answer on this questionに従って。 StyleSheet.create()が通常のjavascriptオブジェクトを返さないため、...をスタイル定義に使用することはできません。

const { style } = props; 
StyleSheet.flatten([style, {borderWidth: 1}]) 
1

変更物事を

active && 'foo' 
のように:

しかし、あなたはあなたの問題を解決するために、すなわち、StyleSheetの初期化中に

const styles = StyleSheet.create({ 
    container: { 
     ...StyleSheet.absoluteFillObject, 
     top:null, 
    } 
}) 

...を使用することができ、あなたが平らに使用する必要があります

~

active ? 'foo' : '' 

反応性ネイティブ嫌い&&に割り当てられます。
私はそれが深いどこかのパッケージャのバグだと思います。

関連する問題