Реагировать: установить тип свойства по умолчанию для массива

В React я могу установить PropTypes по умолчанию следующим образом:

MyComponent.defaultProps = {
    multiple: false
}

Теперь один из моих реквизитов — это ассоциативный массив. Я хочу установить значение по умолчанию для одного из значений ключа, например:

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

Это не работает. Возможно, это просто синтаксическая ошибка. Как я могу это сделать?


person Gegenwind    schedule 06.01.2017    source источник


Ответы (1)


Реквизиты по умолчанию используются только в том случае, если для этого конкретного свойства не переданы реквизиты. Если вы передаете реквизит myArray, но у объекта нет пары ключ/значение для label, у вас будет два варианта:

Вы можете обработать этот случай в родительском компоненте и проверить, существует ли метка для передаваемого объекта, и если нет, добавить значение по умолчанию. В противном случае в вашем компоненте ImageMultiCheck вам пришлось бы делать что-то вроде var label = myArray.label ? myArray.label : 'default value'

Поскольку это реквизит, вы не хотите изменять свой объект myArray, делая что-то вроде компонента myArray.label = 'default value' in theImageMultiCheck`, поэтому я предложил использовать троичную операцию присваивания переменной.

person finalfreq    schedule 06.01.2017
comment
Спасибо @finalfreq, это хорошо объясняет. Вы правы, говоря, что я не хочу менять фактическое состояние этикетки. Поэтому в моем ImageMultiCheck я просто помещу строку по умолчанию на случай, если метка отсутствует. - person Gegenwind; 07.01.2017