React Native Styling Precedence - PullRequest
0 голосов
/ 28 мая 2020

Этот вопрос касается использования аргумента массива для свойства стиля в компоненте реакции: 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
})]}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...