2017-01-06 17 views
1

でに設定されたデフォルトのproptypeが、私はそうのようなデフォルトのPropTypesを設定することができリアクト:が反応:配列

MyComponent.defaultProps = { 
    multiple: false 
} 

は今、私の小道具の一つは連想配列です。たとえば、次のようにキー値のいずれかの値のデフォルト値を設定したいとします。

ImageMultiCheck.defaultProps = { 
    multiple: false, 
    myArray: {label: 'default Value'} 
} 

これは機能しません。たぶん構文ミスです。どうやってやるの?

答えて

0

デフォルトの小道具は、その特定の小道具に渡された小道具がない場合にのみ使用されます。 myArrayの小道具を渡しているが、オブジェクトにlabelのキーと値のペアがない場合、2つのオプションがあります。

このケースを親コンポーネントで処理し、ラベルが存在するかどうかを確認できますオブジェクトは渡され、デフォルトでは追加されません。それはあなたが、私は三代入演算を使用して提案理由ので、myArray.label = 'default value' in the ImageMultiCheck`コンポーネントのような何かを行うことによって、あなたのmyArrayオブジェクトを変異させたくない小道具であるので、それ以外の場合は、あなたのImageMultiCheckコンポーネントにあなたはvar label = myArray.label ? myArray.label : 'default value'

のいくつかの並べ替えを行う必要があります変数上で。

+0

ありがとうございます@finalfreq、それはそれをよく説明します。あなたは、私がラベルの実際の状態を変更したくないと言うのは間違いありません。したがって、私のImageMultiCheckでは、label-propがない場合にデフォルトの文字列を配置します。 – Gegenwind