Этот вопрос касается использования аргумента массива для свойства стиля в компоненте реакции: style={[styles.localTextStyle, textStyle...]}
Как я понимаю, приоритет от последнего элемента к первому. Таким образом, в приведенном выше примере textStyle перезапишет styles.localTextStyle. Это хорошо, однако я делаю настраиваемый компонент, и я хочу иметь возможность указывать встроенные реквизиты от родителя, и чтобы они имели наивысший приоритет, но не перезаписывали предыдущие стили, если опора не предоставлена.
Например, если бы я писал пользовательский компонент под названием Text:
<Text style={[styles.localTextStyle, textStyle, {
color: color
}]}>
, я бы использовал localTextStyle
по умолчанию, затем стиль, передаваемый от родителя с именем textStyle
, и, наконец, опора с именем color
для установки цвет. Это работает только тогда, когда определено свойство color
, в противном случае оно перезапишет color
, чтобы сбросить его, несмотря на то, что он, возможно, был установлен в textStyle
для более раннего стиля.
Итак, мне интересно, как лучше всего это обойти. В настоящее время я заключил последний аргумент в функцию с именем Clean
, которая возвращает новый объект только с определенными ключами и значениями. Это работает, но делает код беспорядочным, и я был бы шокирован, если бы у кого-то не было более умного и лучшего способа сделать это.
<Text style={[styles.localTextStyle, textStyle, Clean({
color: color
})]}>