Digamos que tengo un componente con un render como este:
<View style={jewelStyle}></View>
Donde jewelStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
¿Cómo puedo hacer que el color de fondo sea dinámico y asignado aleatoriamente? He intentado
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Pero esto hace que todas las instancias de View tengan el mismo color, quiero que cada una sea única.
¿Algun consejo?
css
reactjs
react-native
Pete Thorne
fuente
fuente
Stylesheet.create()
todos modos?Sí, puede y, de hecho, debe usar
StyleSheet.create
para crear sus estilos.Y entonces:
fuente
StyleSheet.flatten
simplemente descarta cualquier optimización deStyleSheet.create
como se indica en los documentos: "NOTA: Tenga cuidado, ya que abusar de esto puede gravarlo en términos de optimizaciones. Los ID habilitan optimizaciones a través del puente y la memoria en general. Referirse a objetos de estilo directamente lo privará de estas optimizaciones ". ( facebook.github.io/react-native/docs/stylesheet.html ).Si aún desea aprovechar
StyleSheet.create
y también tener estilos dinámicos, pruebe esto:Observe cómo la
style
propiedad deView
se establece como una matriz que combina su hoja de estilo con sus estilos dinámicos.fuente
El mas facil es el mio:
fuente
Tuve algún problema sintáctico. Esto funcionó para mi
fuente
Querrás algo como esto:
En este ejemplo, tomo la matriz de filas, que contiene los datos de las filas del componente, y la mapeo en una matriz de componentes de texto. Utilizo estilos en línea para llamar a la
getRandomColor
función cada vez que creo un nuevo componente de texto.El problema con su código es que define el estilo una vez y, por lo tanto, getRandomColor solo se llama una vez, cuando define el estilo.
fuente
Sé que es muy tarde, pero para cualquiera que todavía se lo pregunte, aquí hay una solución fácil.
Podrías simplemente hacer una matriz para los estilos:
El segundo anulará cualquier color de fondo original como se indica en la hoja de estilo. Luego tenga una función que cambie el color:
Esto generará un color hexadecimal aleatorio. Luego simplemente llame a esa función cuando sea y bam, nuevo color de fondo.
fuente
Sé que hay varias respuestas, pero creo que la mejor y más simple es usar un estado "Cambiar" es el propósito del estado.
}
fuente
Puede vincular el valor de estado directamente al objeto de estilo. Aquí hay un ejemplo:
fuente
Sí, puedes crear estilos dinámicos. Puede pasar valores de Componentes.
Primero crea StyleSheetFactory.js
luego úselo en su componente de la siguiente manera
fuente
El uso del operador de extensión de objetos "..." funcionó para mí:
fuente
Si está utilizando una pantalla con filtros, por ejemplo, y desea establecer el fondo del filtro con respecto a si se seleccionó o no, puede hacer:
En qué filtro de conjunto está:
PD: la función
this.props.setVenueFilter(filters)
es una acción de reducción ythis.props.venueFilters
es un estado de reducción.fuente
En caso de que alguien necesite aplicar condiciones
fuente
Esto es lo que funcionó para mí:
Por alguna razón, esta era la única forma en que la mía se actualizaría correctamente.
fuente