Tepki Kullanıcı arayüzleri oluşturmak için popüler bir JavaScript kütüphanesidir ve bu eğitimde size basit bir etkileşimli müzik çalar oluşturmak için nasıl kullanacağınızı göstereceğim. CODEPEN'de çalışacağız ve bu projeyi bir reaksiyon uygulaması için çevrimdışı olarak yazabilirsiniz, çünkü tüm bileşenler bir repoya kolayca taşınabilir.
Keşfedileceğiz sahneler , durum ve bileşenler nasıl birlikte çalışır ve reaksiyon ekosisteminin içinde birbirleriyle iletişim kurar. Ayrıca kullanıyoruz Font müthiş , bu nedenle kodepen CSS panelinizin içine dahil olduğundan emin olun.
Seni çok hızlı bir şekilde tepki vermek ve koşmak için, bir araya getirdim CODEPEN'de sizin için bir koleksiyon ve bunu aşamalara ayırın, böylece herhangi bir noktaya atlayabilirsiniz, adımdan itibaren çatallayın ve oradan ilerleyin. Sizin için CSS'yi de yazdım, böylece reaksiyona odaklanabilmeniz ve hepsi nasıl çalıştığını.
Başlayalım! İlk olarak, reaksiyonda bazı bileşenler oluşturmamız gerekiyor. Kodu alacağız Adım 1 beraberindeki kalemde ve bunu bileşenlere dönüştürün. Hadi her şeyi içeri gireceğimiz ana bileşeni oluşturarak başlayalım. Bu bileşeni arayacağız oyuncu .
Bir bileşen oluşturmanın kodu şöyle görünür:
Let Player = reaact.createClass ({
render: işlev () {iade (
& lt; div classname = "Player" & gt;
& lt; childcomponent / & gt; // Bu, iç içe geçmiş bir alt bileşendir.
& lt; / div & gt;
)}
});
Kullanmanız gerektiğini unutmayın sınıf adı Çünkü sınıf Javascript'te ayrılmıştır. Verilen kodlamadan geçip orada bulduğunuz temel HTML'yi reaksiyon bileşenlerine dönüştürün.
Sonra reaksiyona göre iki harika konsept üzerine odaklanacağız: durum ve sahneler . Henüz bir şey görmeyeceksiniz, çünkü bizim app yapmadık.
Tepki awesomeness'ımızı sunmak için, araca kendisini DOM'ye yerleştireceğini söylememiz gerekir. Bunu yapmak için kullanıyoruz Reactdom.render () . CODEPEN'deki 2. Adımda bunun için kodu bulacaksınız.
REACTROM.RENDER (& LT; Player / & GT;, Document.Queryselector ('beden'));
Her şeyi doğru yaptıysanız, oynatıcının göründüğünü görmelisiniz. Sonra bizim inşa edeceğiz sahneler nesne. sahneler Özellikler için kısa ve bunlar kullanmaları için bileşenlerinize geçtiğiniz bilgi parçalarıdır. Oyuncuya parça için biraz bilgi vermemiz gerekiyor, bu yüzden şimdi yapacağız.
Sizin sahneler nesne içinde saklanır getDefaultprops ve böyle görünmelisin:
GetDefaultProps: Function () {
dönüş {
Izlemek: {
İsim: "Biz gençtik",
Sanatçı: "Odesza",
Albüm: "Yaz Gone",
yıl2012,
Yapıt: "https://funkadelphia.files.wordpress.com/2012/09/odesza-summers-gone-lp.jpg",
Süre: 192,
Kaynak: "https://s3-us-west-2.amazonaws.com/s.cdpn.io/557257/wwy.mp3"
}}
}
Ayrıca bir yaratmamız gerekiyor durum Şarkının geçerli saatini ve oyun / duraklatma durumunu saklamak için nesne:
getinitialstate: işlevi () {
Geri dönüş {Playstatus: 'Play', Geçerli zaman: 0}
}
Uygulamanızın devlet sürekli değişir ve durum nesne. Bu, reaksiyon yazdığınızı hatırlamak önemlidir, çünkü devlet, bir mülk olarak bu duruma dayanan bileşenler değişirse, bu durumun değişmesi durumunda değişecektir. Çalışmak için çok büyük tepki veren şey, sizin için değişiklikleri hesaplaması ve Sayfa değiştiğinde DOM'u verimli bir şekilde güncellemesidir. Her şey senkronizasyonda kalır.
Şimdi geçeceğiz sahneler ve durum Bileşenlerimize değerler ( Aşama 3 ). bizim oyuncu Bileşen şimdi şöyle görünmelidir:
kılmak: işlev () {
geri dönüş (& lt; div classname = "Player" & GT;
& lt; div classname = "background" style = {{'BackternationImage': 'URL (' + this.Props.Track.artwork + ')'}} & gt; / div & gt;
& lt; div classname = "Header" & gt; şimdi "başlık" ve GT; şimdi oynuyor; / div & gt;
& lt; div classname = "Sanat" stili = {{'Backternamege': 'URL (' + this.Props.Track.artwork + ')'}} & gt; / div & gt;
& lt; TrackInformation Track = {this.Props.Track} / ve gt;
& lt; scrubber / & gt; kontrolleri / & gt;
& lt; zaman damgaları süresi = {this.props.track.duration} geçerli zaman = {this.state.currenttime} / ve gt;
& lt; audio & gt; kaynağı src = {this.Props.Track.Source} / ve gt; / audio & gt;
& lt; / div & gt;
)}
Daha sonra bu değerleri alt bileşenlerimizin içinde toplayabiliriz. Örneğin:
var timesTamps = reaact.createClass ({
render: işlev () {iade (
& lt; div classname = "zaman damgaları" & gt;
& lt; div classname = "zaman zaman - akım" & gt; {this.props.currenttime} & lt; / div & gt;
& lt; div classname = "zaman zaman - toplam" & gt; {this.props.duration} & lt; / div & gt;
& lt; / div & gt;
)}
});
Bakmak 4. adımda codepen Tüm sahnelerin nasıl geçtiğini ve çocuk bileşenlerinde kullanıldığını görmek için.
Şu anda zaman damgaları sadece düz sayılardır. Onları uygulamamızda kullanılmadan önce zaman damgalarına dönüştürmemiz gerekiyor. Bunu, bileşenin içindeki bir işlev yazarak yapacağız:
ConvertTime: Function (TimesTamp) {
izin verir = Math.floor (zaman damgası / 60);
saniye = zaman damgası - (dakika * 60);
eğer (saniye <10) {saniye = '0' + saniye; }
zaman damgası = dakika + ':' + saniye;
geri dönüş zaman damgası;
}
Bunu bizde kullanabiliriz.
Zaman damgaları
bileşen:
{this.converttime (this.props.currenttime)}
.
Bir işlevi bağlayacağız tıklamada Oynat / Duraklat düğmesi ve ana bileşene geri iletin: & lt; kontrolleri izleyerek = {this.state.playstatus} onclick = {this.toggleplay} / ve gt; .
Geçişimiz buna benziyor:
Toggleplay: Function () {
Durum = this.state.playstatus izin verin;
Ses = document.GetElementbyID ('Ses');
Eğer (status === 'oynat') {
Durum = 'Duraklat'; Audio.Play ();
} Başka {
Durum = 'Oynat'; Audio.Pause ();
}
this.setstate ({Playstatus: status});
}
Ayrıca, iş fonksiyonunun içine bazı kod eklememiz gerekir. Kontroller Simgeyi 'Oynat' '' 'duraklat'ı ve şarkı oynadığında zaman damgalarını güncellemek için başka bir işlevi değiştirecek bileşen.
Render: Function () {
sınıfnamalar olsun;
Eğer (this.props.isplaying == 'duraklama') {
sınıfnames = 'FA FA-FW FA-PAUSE';
} Başka {
ClassNames = 'FA FA-FW FA-PLAY';
}
dönüş {...}
}
Önceden zaman damgalarımızın güncellenmesini işlemek için bir işlev yazmamız gerekiyor. Bu kodu ayrı tutmak en iyisi, daha sonra başka bir şey için kullanmak istememiz durumunda.
UpdateTime: İşlev (TimesTamp) {
TIMESTAMP = MATH.FOOR (TIMESTAMP);
this.setstate ({currenttime: timestamp});
}
Sonunda, güncellememiz gerekiyor. playtoggle aramak için işlev Güncelleme zamanı fonksiyonu setinterval .
...
Audio.Play ();
_This = bu;
setinterval (işlev () {
.....
_This.UpdatesCrubber (yüzde);
_this.updatetime (geçerli zaman);
}, 100);
...
Şimdi parlak bir müzik çalarınız olmalı. Buraya gidebilir ve şarkıdan fırçalamak için özellikleri ekleyebilirsiniz. e.pagex veya bir dizi, sonraki ve önceki düğmelerde yaklaşan parça kimliklerini saklayarak Çalma Listesi işlevselliğini ekleyin. Eğer sıkışıp kalırsan, @mrjackolai - Yardım etmekten mutlu olacağım! Eğlenmene bak ve iyi şanslar.
Bu makale başlangıçta ortaya çıktı net dergisi Sayı 289; buradan satın al K!
İlgili Makaleler:
Bir kuş çizmeyi öğrenmek, parlak bir eğlence olabilir. Çizim becerilerinizi geliştirmek istiyorsanız veya yeni bir hobi almayı düşünüyorsanız..
(Resim Kredi: Alex Blake / Facebook) Facebook gizlilik ayarları bir paradoksun biraz görünebilir. Facebook, kullan..
Sayfa 1/2: REACT'de bir gösterge paneli uygulaması yapın - Adım 1-10 ..
Ortaçağ kiliseleri, yeşil meralar ve kayrak tepeli çiftlik evleri, İngiliz kırsalını çöpe atan köylerle eşanlamlıdı..
Mobil oyunların ve indie'nin gelişiyle video oyunları , büyük bir illüstratör ve animatörlerin içine gire..
Kendi kendine yayıncılık İngiltere e-kitap pazarının yüzde 22'sini oluşturuyor ve büyümeye devam ediyor, yani yazarlar,..
Tasarım sistemleri hakkında daha fazla şey öğrenmeyi seviyor musunuz? O zaman kıdemli UI mühendisini kaçırmayın ..
Kürk karakteri oluşturmak kolay olabilir, ancak gerçekten çekici bir parçayı yapmak istiyorsanız 3d sanat D..