Скажем, у меня есть компонент с таким рендером:
<View style={jewelStyle}></View>
Где jewelStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
Как сделать цвет фона динамическим и назначенным случайным образом? я пробовал
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Но это заставляет все экземпляры View иметь один и тот же цвет, я хочу, чтобы каждый был уникальным.
Какие-нибудь советы?
css
reactjs
react-native
Пит Торн
источник
источник
Stylesheet.create()
?Да, вы можете и на самом деле вы должны использовать его
StyleSheet.create
для создания своих стилей.А потом:
источник
StyleSheet.flatten
просто отбрасывает любую оптимизацию изStyleSheet.create
как указано в документах: "ПРИМЕЧАНИЕ. Соблюдайте осторожность, поскольку злоупотребление этим может обременить вас с точки зрения оптимизации. Идентификаторы включают оптимизацию через мост и память в целом. Обращение к объектам стиля напрямую лишит вас эти оптимизации ". ( facebook.github.io/react-native/docs/stylesheet.html ).Если вы все еще хотите воспользоваться преимуществами
StyleSheet.create
динамических стилей, попробуйте следующее:Обратите внимание, как
style
свойство объектаView
установлено как массив, который объединяет вашу таблицу стилей с вашими динамическими стилями.источник
Самый простой - мой:
источник
Возникла синтаксическая проблема. Это сработало для меня
источник
Вам понадобится что-то вроде этого:
В этом примере я беру массив строк, содержащий данные для строк в компоненте, и отображаю его в массив текстовых компонентов. Я использую встроенные стили для вызова
getRandomColor
функции каждый раз, когда создаю новый текстовый компонент.Проблема с вашим кодом заключается в том, что вы определяете стиль один раз, и поэтому getRandomColor вызывается только один раз - когда вы определяете стиль.
источник
Я знаю, что это очень поздно, но для тех, кто все еще задается вопросом, вот простое решение.
Вы можете просто создать массив стилей:
Второй переопределит любой исходный цвет фона, указанный в таблице стилей. Затем есть функция, которая меняет цвет:
Это создаст случайный шестнадцатеричный цвет. Затем просто вызывайте эту функцию всякий раз, когда и бац, новый цвет фона.
источник
Я знаю, что есть несколько ответов, но я думаю, что лучше и проще всего использовать состояние «Изменить» - это цель состояния.
}
источник
Вы можете привязать значение состояния непосредственно к объекту стиля. Вот пример:
источник
Да, вы можете создавать динамические стили. Вы можете передавать значения из компонентов.
Сначала создайте StyleSheetFactory.js
затем используйте его в своем компоненте следующим образом
источник
У меня сработал оператор распространения объекта "...":
источник
Если вы, например, используете экран с фильтрами и хотите установить фон фильтра относительно того, был он выбран или нет, вы можете сделать:
На каком установлен фильтр:
PS: функция
this.props.setVenueFilter(filters)
является действием redux иthis.props.venueFilters
является состоянием redux.источник
В случае, если кому-то нужно применить условия
источник
Вот что у меня сработало:
По какой-то причине это был единственный способ правильно обновить мой.
источник