Digamos que eu tenha um componente com renderização assim:
<View style={jewelStyle}></View>
Onde jewelStyle =
{
borderRadius: 10,
backgroundColor: '#FFEFCC',
width: 20,
height: 20,
},
Como posso tornar a cor de fundo dinâmica e atribuída aleatoriamente? eu tentei
{
borderRadius: 10,
backgroundColor: getRandomColor(),
width: 20,
height: 20,
},
Mas isso faz com que todas as instâncias de View tenham a mesma cor, quero que cada uma seja única.
Alguma dica?
css
reactjs
react-native
Pete Thorne
fonte
fonte
Stylesheet.create()
?Sim, você pode e, na verdade, deve usar
StyleSheet.create
para criar seus estilos.E depois:
fonte
StyleSheet.flatten
simplesmente descarta qualquer otimizaçãoStyleSheet.create
conforme declarado nos documentos: "NOTA: Tenha cuidado, pois abusar disso pode sobrecarregar você em termos de otimizações. Os IDs permitem otimizações por meio da ponte e da memória em geral. Consultar diretamente os objetos de estilo o privará de essas otimizações. " ( facebook.github.io/react-native/docs/stylesheet.html ).Se você ainda deseja aproveitar as vantagens
StyleSheet.create
e também ter estilos dinâmicos, experimente:Observe como a
style
propriedade deView
é definida como uma matriz que combina sua folha de estilo com seus estilos dinâmicos.fonte
O mais fácil é o meu:
fonte
Teve algum problema sintaticamente. Isso funcionou para mim
fonte
Você vai querer algo assim:
Neste exemplo, pego a matriz de linhas, contendo os dados das linhas do componente, e mapeio-a em uma matriz de componentes de texto. Eu uso estilos embutidos para chamar o
getRandomColor
função sempre que crio um novo componente de texto.O problema com seu código é que você define o estilo uma vez e, portanto, getRandomColor só é chamado uma vez - quando você define o estilo.
fonte
Eu sei que é extremamente tarde, mas para quem ainda está se perguntando aqui está uma solução fácil.
Você pode simplesmente fazer uma matriz para os estilos:
O segundo substituirá qualquer cor de fundo original conforme declarado na folha de estilo. Então, tenha uma função que muda a cor:
Isso irá gerar uma cor hexadecimal aleatória. Em seguida, basta chamar essa função quando quiser e bam, nova cor de fundo.
fonte
Eu sei que existem várias respostas, mas acho que a melhor e mais simples é usar um estado "Mudar" é o propósito do estado.
}
fonte
Você pode vincular o valor do estado diretamente ao objeto de estilo. Aqui está um exemplo:
fonte
Sim, você pode criar estilos dinâmicos. Você pode passar valores de Componentes.
Primeiro crie StyleSheetFactory.js
em seguida, use-o em seu componente da seguinte maneira
fonte
Usar o operador de propagação de objeto "..." funcionou para mim:
fonte
Se você estiver usando uma tela com filtros, por exemplo, e quiser definir o fundo do filtro se ele foi selecionado ou não, você pode fazer:
Em qual filtro definido é:
PS: a função
this.props.setVenueFilter(filters)
é uma ação redux ethis.props.venueFilters
é um estado redux.fonte
Caso alguém precise aplicar condições
fonte
Aqui está o que funcionou para mim:
Por algum motivo, essa era a única maneira de o meu ser atualizado corretamente.
fonte