React로 간단한 음악 플레이어 만들기

반응 는 사용자 인터페이스를 구축하는 데 널리 사용되는 JavaScript 라이브러리이며이 자습서에서는이를 사용하여 간단한 대화 형 음악 플레이어를 구축하는 방법을 보여 드리겠습니다. CodePen에서 작업 할 예정이며 모든 구성 요소를 매우 쉽게 리포지토리로 이식 할 수 있으므로 React 앱 내에서이 프로젝트를 오프라인으로 작성할 수도 있습니다.

우리는 탐구 할 것입니다 소품 , 상태 구성 요소가 함께 작동하고 React 생태계 내에서 서로 통신하는 방법. 우리는 또한 사용하고 있습니다 멋진 글꼴 이므로 CodePen CSS 패널에 포함되어 있는지 확인하십시오.



React를 매우 빠르게 시작하고 실행하기 위해 CodePen의 컬렉션 , 단계로 분할하여 언제든지 점프하여 단계를 분기 한 후 앞으로 나아갈 수 있습니다. 또한 CSS를 작성 했으므로 React와 작동 방식에 집중할 수 있습니다.



React UI 만들기

시작하자! 먼저 React에서 몇 가지 구성 요소를 만들어야합니다. 다음에서 코드를 가져옵니다. 함께 제공되는 Pen의 1 단계 , 구성 요소로 변환합니다. 다른 모든 것을 내부에 넣을 기본 구성 요소를 만드는 것으로 시작하겠습니다. 이 컴포넌트를 플레이어 .

pny는 좋은 그래픽 카드를 만들까요?

구성 요소를 만드는 코드는 다음과 같습니다.



let Player = React.createClass({ render: function() { return ( // This is a child component, nested inside. )} });

사용해야합니다. className 때문에 수업 자바 스크립트로 예약되어 있습니다. 제공된 CodePen을 살펴보고 거기에서 찾은 기본 HTML을 React 구성 요소로 변환하십시오.

다음으로 React의 두 가지 멋진 개념에 초점을 맞출 것입니다. 상태소품 . 앱을 렌더링하지 않았기 때문에 아직 아무것도 볼 수 없습니다.

렌더링, 상태, 소품

React를 멋지게 렌더링하려면 도구에 DOM에서 자신을 배치 할 위치를 알려야합니다. 이를 위해 우리는 ReactDOM.render () . CodePen의 2 단계에서 이에 대한 코드를 찾을 수 있습니다.



ReactDOM.render(, document.querySelector('body'));

모든 것을 올바르게 수행했다면 플레이어가 나타나는 것을 볼 수 있습니다. 다음으로 우리는 소품 목적. 소품 속성의 줄임말이며 사용하기 위해 구성 요소에 전달하는 정보입니다. 플레이어에게 트랙에 대한 정보를 제공해야하므로 지금 수행하겠습니다.

이 데모에서는

이 데모에서는 Odesza의 'We Were Young'아트 워크를 사용했습니다. 이미지를 클릭하면 밴드의 Summer 's Gone LP를 무료로받을 수 있습니다.

너의 소품 객체는 내부에 저장됩니다 getDefaultProps 이며 다음과 같아야합니다.

getDefaultProps: function() { return { track: { name: 'We Were Young', artist: 'Odesza', album: 'Summer's Gone', year: 2012, artwork: 'https://funkadelphia.files.wordpress.com/2012/09/odesza-summers-gone-lp.jpg', duration: 192, source: 'https://s3-us-west-2.amazonaws.com/s.cdpn.io/557257/wwy.mp3' }} }

우리는 또한 상태 노래의 현재 시간과 재생 / 일시 중지 상태를 저장하는 객체 :

getInitialState: function() { return { playStatus: 'play', currentTime: 0 } }

앱의 상태는 지속적으로 변경되며 상태 목적. 상태가 변경되면 해당 상태를 속성으로 사용하는 구성 요소가 변경되므로 React를 작성할 때 기억해야합니다. React가 작업하기에 매우 좋은 이유는 페이지가 변경 될 때 변경 사항을 계산하고 DOM을 효율적으로 업데이트한다는 것입니다. 모든 것이 동기화 상태를 유지합니다.

소품 및 상태 전달

이제 우리는 지나갈거야 소품상태 값을 구성 요소 ( 3 단계 ). 우리의 플레이어 구성 요소는 이제 다음과 같아야합니다.

render: function() { return ( Now playing )}

그런 다음 자식 구성 요소 내에서 이러한 값을 선택할 수 있습니다. 예를 들면 :

var Timestamps = React.createClass({ render: function() { return ( {this.props.currentTime} {this.props.duration} )} });

살펴보세요 CodePen의 4 단계 모든 소품이 어떻게 전달되고 하위 구성 요소에서 사용되는지 확인합니다.

기간 계산

현재 타임 스탬프는 단순한 숫자입니다. 앱에서 사용하려면 먼저 타임 스탬프로 변환해야합니다. 컴포넌트 내부에 함수를 작성하여이를 수행합니다.

convertTime: function(timestamp) { let minutes = Math.floor(timestamp / 60); let seconds = timestamp - (minutes * 60); if (seconds < 10) { seconds = '0' + seconds; } timestamp = minutes + ':' + seconds; return timestamp; }

그런 다음 이것을 우리의 타임 스탬프 구성 요소:
{this.convertTime (this.props.currentTime)} .

재생 및 일시 중지

우리는 함수를 onClick 재생 / 일시 중지 버튼의 이벤트를 클릭하고 기본 구성 요소로 다시 전달합니다. .

Toggle은 다음과 같습니다.

togglePlay: function() { let status = this.state.playStatus; let audio = document.getElementById('audio'); if(status === 'play') { status = 'pause'; audio.play(); } else { status = 'play'; audio.pause(); } this.setState({ playStatus: status }); }

아이콘이 화살표를 나타내는 화살표에서 토글되도록 코드를 조정해야합니다.

아이콘이 '재생'을 나타내는 화살표와 '일시 중지'를 나타내는 두 개의 평행선에서 전환되도록 코드를 조정해야합니다.

또한 렌더링 함수 내부에 몇 가지 코드를 추가해야합니다. 통제 수단 아이콘을 '재생'에서 '일시 중지'로 전환하는 구성 요소와 노래가 재생 될 때 타임 스탬프를 업데이트하는 또 다른 기능입니다.

render: function() { let classNames; if (this.props.isPlaying == 'pause') { classNames = 'fa fa-fw fa-pause'; } else { classNames = 'fa fa-fw fa-play'; } return {...} }

이전의 타임 스탬프 업데이트를 처리하는 함수를 작성해야합니다. 나중에 다른 용도로 사용하려는 경우를 대비하여이 코드를 별도로 유지하는 것이 가장 좋습니다.

updateTime: function(timestamp) { timestamp = Math.floor(timestamp); this.setState({ currentTime: timestamp }); }

숫자를 타임 스탬프로 변환하는 함수 작성

숫자를 타임 스탬프로 변환하는 함수 작성

마지막으로 playToggle 호출하는 함수 updateTime 기능 setInterval .

... audio.play(); let _this = this; setInterval(function() { ..... _this.updateScrubber(percent); _this.updateTime(currentTime); }, 100); ...

앞으로 나아가 다

이제 반짝이는 음악 플레이어가 있어야합니다. 여기에서 더 나아가 다음을 사용하여 노래를 스크러빙하는 기능을 추가 할 수 있습니다. e.pageX 또는 배열, 다음 및 이전 버튼에 예정된 트랙 ID를 저장하여 재생 목록 기능을 추가합니다. 막히면 다음으로 연락하십시오. 뿡 빵뀨 – 기꺼이 도와 드리겠습니다! 재미 있고 행운을 빕니다.

이 기사는 원래 넷 매거진 문제 289; 여기서 사세요 !

관련 기사:

애프터 이펙트 모션 그래픽 튜토리얼 pdf