Reagir É uma popular biblioteca JavaScript para construir interfaces de usuário, e neste tutorial vou mostrar como usá-lo para construir um simples player de música interativa. Vamos trabalhar em Codepen, e você também pode escrever este projeto offline dentro de um aplicativo reagir, já que todos os componentes podem ser portados para um repo muito facilmente.
Nós vamos explorar adereços , Estado e como os componentes trabalham juntos e se comunicam uns com os outros dentro do ecossistema reagir. Nós também estamos usando Font Awesome , então certifique-se de que está incluído dentro do seu painel CSS CDEPEN.
Para te levantar e correr com reagir muito rapidamente, eu montei uma coleção para você em codepen e dividi-lo em fases para que você possa pular em qualquer ponto, garfo o passo e avançar de lá. Eu também escrevi o CSS para você, para que você possa se concentrar apenas em reagir e como tudo está funcionando.
Vamos começar! Primeiro, temos que criar alguns componentes em reagir. Nós vamos levar o código de Etapa 1 na caneta que acompanha e convertê-lo em componentes. Vamos começar criando o componente principal que vamos colocar tudo o mais dentro. Vamos chamar esse componente Jogador .
O código para criar um componente é assim:
Deixe o jogador = react.createClass ({
Render: Função () {retorno (
& lt; div nomeame = "player" & gt;
& lt; childcomponent / & gt; // Este é um componente filho, aninhado dentro.
& lt; / div & gt;
}}
});
Note que você tem que usar nome da classe Porque aula é reservado em javascript. Vá até a codepen fornecida e converta o HTML básico que você encontra lá em reagir componentes.
Em seguida, vamos nos concentrar em mais dois conceitos incríveis em reagir: Estado e adereços . Você não verá nada ainda, porque não temos processado nosso aplicativo.
A fim de tornar a nossa maravilha reagir, precisamos contar a ferramenta onde se colocar no DOM. Para fazer isso, usamos Reattom.render () . Você encontrará o código para isso no passo 2 em Codepen.
reattom.render (& lt; jogador / & gt;, document.queryselector ('corpo'));
Se você fez tudo corretamente, você deve ver o jogador aparecer. Em seguida, vamos construir nosso adereços objeto. adereços é curto para propriedades, e estas são informações que você passa para seus componentes para usar. Precisamos dar ao jogador algumas informações para a pista, então faremos isso agora.
Seu adereços objeto é armazenado dentro getDefaultProps. e deve ser assim:
GetDefaultProps: Função () {
Retorna {
acompanhar: {
Nome: "Nós éramos jovens",
Artista: "Odesza",
Álbum: "Summer se foi",
Ano: 2012,
Artwork: "https://funkadelphia.files.wordpress.com/2012/09/odesza-summers-gone-lp.jpg",
Duração: 192,
Fonte: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/557257/wwy.mp3"
}}
}
Também precisamos criar um Estado Objeto para armazenar a hora atual da música e do estado Play / Pause:
getInitialstate: função () {
Retornar {Playstatus: 'Play', CurrentTime: 0}
}
O estado do seu aplicativo muda constantemente e é armazenado no Estado objeto. Isso é importante para lembrar quando você está escrevendo reagir porque os componentes que dependem desse estado como uma propriedade mudará se o estado. O que faz reagir tão ótimo para trabalhar é que ele calcula as alterações para você e atualiza o DOM eficientemente quando a página é alterada. Tudo fica em sincronia.
Agora vamos passar adereços e Estado valores em nossos componentes ( etapa 3 ). Nosso Jogador componente deve agora se parecer com isso:
Render: Função () {
retorno (& lt; divame classname = "jogador" & gt;
& lt; divame classname = "fundo" estilo = {{'backgroundImage': 'URL (' + this.props.track.artwork + ')'}} & gt; & lt; / div & gt;
& lt; divameName Div = "Header" & gt; gt; gt classname = "title" & gt; agora jogando & lt; / div & gt; / div & gt;
& lt; divameName Div = "Artwork" Style = {{'backgroundImage': 'URL (' + this.props.track.artwork + ')'}} & gt; & lt; / div & gt;
& lt; faixa de trackinformation = {this.props.track} / & gt;
& lt; scrubber / & gt; e lt; controles / & gt;
& lt; duração de timestamps = {this.props.track.Duration} CurrentTime = {this.state.currenttime} / & gt;
& lt; áudio & gt; & lt; sourc = {this.props.track.source} / & gt; & lt; / áudio & gt;
& lt; / div & gt;
)}
Podemos então escolher esses valores dentro de nossos componentes infantis. Por exemplo:
var timestamps = reagir.createClass ({
Render: Função () {retorno (
& lt; div nomeame = "timestamps" & gt;
& lt; divameName Div = "Time Time - Atual" & GT; {this.props.currenttime} & lt; / div & gt;
& lt; div nomeame = "Time Time - Total" & GT; {this.props.Duration} & lt; / div & gt;
& lt; / div & gt;
}}
});
Olhar através Etapa 4 em Codepen Para ver como todos os adereços são transmitidos e usados nos componentes da criança.
Os timestamps agora são apenas números simples. Precisamos convertê-los em timestamps antes que eles possam ser usados em nosso aplicativo. Faremos isso escrevendo uma função dentro do nosso componente:
Convertime: Função (Timestamp) {
deixe minutos = math.floor (timestamp / 60);
deixe segundos = timestamp - (minutos * 60);
if (segundos e lt; 10) {segundos = '0' + segundos; }
Timestamp = minutos + ':' + segundos;
Timestamp de retorno;
}
Podemos então usar isso em nosso
Timestamps.
componente:
{this.convertime (this.props.currenttime)}
.
Nós vamos ligar uma função ao onclick. Evento do botão Play / Pause e passe de volta para o componente principal: & lt; controles isplaying = {this.state.playstatus} onclick = {this.toggleplay} / & gt; .
Nossa alternância é assim:
TogglePlay: Função () {
Deixe status = this.state.playstatus;
Deixe áudio = document.getelementbyid ('audio');
if (status === 'play') {
status = 'pausa'; Áudio.Play ();
} outro {
Status = 'Play'; audio.Pause ();
}
este.setstate ({playstatus: status});
}
Também precisamos adicionar algum código dentro da função de renderização do Controles. Componente para alternar o ícone de 'Play' para 'pausar' e outra função para atualizar os timestamps quando a música estiver sendo reproduzida.
Render: Função () {
Deixe os nomes;
if (this.props.isplaying == 'pausa') {
classnames = 'fa fa-fw fa-pause';
} outro {
classnames = 'fa fa-fw fa-play';
}
Retorna {...}
}
Precisamos escrever uma função para lidar com a atualização dos nossos timestamps de antes. É melhor manter este código separado, caso quisermos usá-lo para outra coisa mais tarde.
UpdateTime: Função (Timestamp) {
timestamp = math.floor (timestamp);
este.SetTate ({CurrentTime: Timestamp});
}
Finalmente, precisamos atualizar nosso PLAYTOGGLE. função para chamar o tempo de atualização função em A. setInterval. .
...
Áudio.Play ();
deixe _this = isso;
setInterval (função () {
.....
_this.updatescrubber (por cento);
_this.updatetime (Hourtime);
}, 100);
...
Então agora você deve ter um jogador de música de trabalho brilhante. Você poderia ir mais aqui e adicionar recursos para esfregar através da música com e.pagex. ou adicione a funcionalidade da lista de reprodução, armazenando os próximos IDs de faixa em um conjunto de matriz, próximo e anteriores. Se você ficar preso, estenda a mão para @mrjackolai. - Eu ficarei feliz em ajudar! Divirta-se e boa sorte.
Este artigo originalmente apareceu em Revista Net. Edição 289; compre aqui !
Artigos relacionados:
(Crédito da imagem: futuro) Angular 8 é a última versão do Angular do Google - um dos melhores estruturas..
A velocidade média de uma moderna conexão de internet soaria muito futurista para os mestres da Web do passado. Nos primeiros d..
Aprendizagem de máquina. Aprendizagem profunda. Processamento de linguagem natural. Visão de computador. Automação. Reconheci..
Pagina 1 de 2: Página 1 Página 1 Página 2 O especialista em..
Página 1 de 4: Bloqueio de folha Bloqueio de folha ..
Há muitas maneiras de abordar a criatura e Design de personagem e tudo depende do que você quer que seu resultad..
À frente de sua conversa em Gere London Em 21 de setembro, nós alcançamos Patrick Hamann. , um e..
Cada instalação pela primeira vez da tinta do clip Studio envolve uma exploração excitada da subtool de decoração. É uma verdadeira smorgasbord de escovas naturais, antinaturais e fran..