Back to Question Center
0

React 16-д шинэ зүйл юу вэ?            React 16-д шинэ зүйл юу? Холбогдох сэдэв: ES6AngularJSNode.jsTools & Semalt

1 answers:
React 16-д шинэ зүйл юу вэ?

React нь өндөр чанартай, гүнзгий танилцуулга бол, та Канадын бүрэн стек хөгжүүлэгч Wes Bos өнгөрсөн байж чадахгүй. Энд хичээлээ оруулаад SITEPOINT ашиглан 25% off авах ба SitePoint-ийг дэмжихэд туслах болно.

Энэ бичлэгт бид Semalt 16 дээр зарим шинэ функцуудыг ашиглан хөгжмийн тоглуулагч хэрхэн үүсгэх талаар суралцах болно.

Хөгжим тоглуулагчийг хэрэгжүүлэхдээ бид React 16-ийн зарим өөрчлөлтүүдийн талаар мэдэх болно. Semalt бол маш цөөн өөрчлөлтүүд учраас бид бүгдийг нь хамрахгүй, гэхдээ бид тэдгээрийг чухал бөгөөд өнөөдөр хэрэгжүүлж болох юм.

Энэ бичлэгийн бүрэн эхийг GitHub дээрээс авах боломжтой.

Програмыг эхлүүлэхийн тулд, cd кодыг татаж авахын тулд cd

     нээн суулгах хэрэгтэйnpm эхлэх    

Уралдаант шалгаруулалтын мэдэгдэлд

Бүх React аппликейшнууд нь хэрхэн, ямар бүрэлдэхүүн хэсгүүд (тэдгээр бүрэлдэхүүн хэсгүүдтэй холбоотой ямар өгөгдлүүд) хэрхэн харагдахыг тодорхойлдог гэж нэрлэгдсэн гэсэн үл хөдлөх хөрөнгө багтана.

тоглуулагч тоглуулах boolean - болон нэг хувьсагчийг тоглуулах эсэхийг шийддэг нэг хувьсагч байдаг төлөв одоогийн зам төлөв - currentTrackIndex хувьсагч.

     энэ. state = {тоглох: хуурамч,currentTrackIndex: 0};    

Төр гэж юу вэ?

Тухайн бүрэлдэхүүн хэсгийн төлөв -д хандах үед бид хуудасны бүрэлдэхүүнд байгаа бүрэлдэхүүн хэсгийн хормын хувилбарыг хэлнэ.

React-ийн бүрэлдэхүүн хэсгүүд нь өөрийн байр суурийг тодорхойлж болно, бид энэ бичлэгт ашиглах болно. Бид React компонентийг төлөвшүүлэх үед бүрэлдэхүүн хэсэг нь төлөвт гэж хэлж болно. React component нь бидний хөгжим тоглуулагч гэх мэт төлөвт бүрэлдэхүүн хэсгийг боловсруулахын тулд төлөв өмчийг ашиглан өөрийн төлөвийг тодорхойлох боломжтой.

Дараачийн , өмнөх товчлуурууд, тоглуулагчийн замууд тоглох , бүрэлдэхүүн хэсэг нь одоогийн төлөвийг шинэчлэх болно.

Props vs State

React хэрэглээний хувьд ба муж хоорондох ялгааг ойлгох нь чухал юм. Хөгжим тоглуулагч маань хоёр төлөв хувьсагчтай бөгөөд бидний хэрэглээ нь тодорхой цаг хугацаанд харуулах арга замыг тодорхойлно. App бүрэлдэхүүн хэсэг нь бидний хүүхдийн бүрдэл хэсгүүд Хяналт бүрэлдэхүүн хэсэг ба TrackList бүрэлдэхүүнийг харуулдаг гол бүрэлдэхүүн юм. Эдгээр хоёр бүрдэл хэсгүүд нь бидний өргөдлийн төлөв байдлын талаар мэдээлэл авахын тулд App бүрэлдэхүүн хэсэг нь хүүхдүүдийн бүрэлдэхүүн хэсгүүдийн хувьд таяг болгон мэдээллийг дамжуулдаг. Эдгээр тулгуурыг хүүхдийн бүрэлдэхүүн хэсэгт хэрэглэж болно. Үүнийг ойлгох бас нэг чухал зүйл бол бидний App бүрэлдэхүүн хэсгүүд шинэчлэгдэж байх үед бидний Хяналт бүрэлдэхүүн хэсэг болон TrackList бүрэлдэхүүн хэсэг нь бас шинэчлэгдэх болно. App бүрэлдэхүүн хэсэг.

Хяналтууд

Бидний Хяналт бүрэлдэхүүн хэсэг нь бидний App бүрэлдэхүүн хэсгийн анхны хүүхэд юм. Хяналт бүрэлдэхүүн хэсгүүдийг хоёр таяг өгсөн: onClick ба тоглуулах дээр өгсөн. onClick тулгуур нь App бүрэлдэхүүн хэсэгт Controls component -д тодорхойлсон handleClick функцыг дамжуулах боломжийг бидэнд олгодог. Хэрэглэгч бидний Controls бүрэлдэхүүн хэсгүүдийн товчлууруудын нэгийг дарахад, handleClick функц дуудах болно.

Бидний товчийг хэрхэн яаж гүйцэтгэж, бидний Хяналт бүрэлдэхүүн хэсгүүдийн товчлууруудыг хэрхэн үзээрэй.

Бидний Controls бүрэлдэхүүн хэсэг нь бидэнд гурван чухал товчтой:

  1. << (өмнөх) товч - сумны дүрс зүүн тийш чиглэсэн өмнөх чиглэлийг сонгох
  2. Хөгжим
  3. тоглуулж, зогсоох тоглуулах / түр зогсоох товч товч
  4. >> (дараагийн) товч - сумны баруун тийш чиглэсэн сумны дүрс нь жагсаалт дахь дараагийн замыг сонгоно.

Эдгээр товчлуурууд бүгд товшсон үед бид App бүрэлдэхүүн хэсгээс програмын үр дүнг ажиллуулах товчлуурын функцийг дуудаж байна. Манай хөгжмийн тоглуулагчийн товчлуур бүр нь id байдаг бөгөөд энэ нь бидэнд тодорхой нэг дарааллыг хэрхэн зохицуулахыг тодорхойлоход тус болно.

handleClick функцын функцад бид 27 товчлуураар id ашигладаг 27 функцийг ашигладаг switch statement ашигладаг. зорилтот. id товчийг дарснаар үйлдлийг хэрхэн зохицуулахыг тодорхойлох. Дараагийн хэсэгт бид шилжүүлгийн мэдэгдэл бүрийн талаар юу болсныг харцгаая.

Тоглуулах товчлуур

Тоглуулах товчийг товшсон үед бид програмын цөөн хэсгийг шинэчлэх хэрэгтэй болно. Тоглоомын дүрсийг түр зуурын дүрсээр солих хэрэгтэй болно. Хэрэв бид одоогийн байдлаар 0 тохиргоог шинэчлэх бол currentTrackIndex -ийг шинэчлэх шаардлагатай болно. Бид програмын хоёр хэсгийг өөрчлөхийн тулд setState гэж дуудах болно, React component.

setState функц нь бүх React бүрэлдэхүүн хэсгүүдэд байдаг бөгөөд бидний хөгжим тоглуулагчийн төлөвийг хэрхэн шинэчилдэг. setState функцийн эхний аргумент нь обьект эсвэл функц байж болно. Хэрэв бид дараагийн төлөвийг тооцоолохын тулд хэрэглээний одоогийн төлөвт найдахгүй байгаа бол обьектийг ашиглан эхний аргумент нь төгс нарийн арга бөгөөд иймэрхүү харагдах болно: setState ({currentState: 'newState'}) . Бидний хувьд бид програмынхаа өнөөгийн төлөв байдалд найдаж байна. Бидний хэрэглээний дараагийн төлөвийг тодорхойлохын тулд бид функцийг ашиглахыг хүсэх болно. React баримт нь яагаад чухал болохыг харуулж байна:

Reacts олон багц setState нь гүйцэтгэлийн хувьд нэг шинэчлэлт рүү дууддаг. Яагаад гэвэл энэ. тулгуур ба . state нь асинхроноор шинэчлэгдэж болох бөгөөд та дараагийн төлөвийг тооцоолохын тулд тэдгээрийн утгыг найдаж болохгүй.

Semalt 16 нь түүний онцлог шинжүүдийг (асинхрон узуулэлтийг оруулаад) шилжихэд энэ ялгааг ойлгоход илүү чухал болох болно.

Тоглуулах товчлуурыг дарж, callState гэж дуудах үед бид currentTrackIndex төлвийн хувьсагчийн одоогийн утга дээр найдаж байгаа тул бид функцээр дамждаг. Функцэд шилжсэн эхний аргумент нь бидний өмнөх хэрэглээний төлөв бөгөөд хоёр дахь аргумент нь одоогийн тулгуур юм. Бидний хувьд бид дараачийн төлөвийг тодорхойлохын тулд өргөдөлийн өмнөх төлөв л хэрэгтэй:

     "тоглох" тохиолдолд:энэ нь. setState ((state, props) => {currentTrackIndex = төл болгохыг зөвшөөрөх. currentTrackIndex;if (currentTrackIndex === 0) {currentTrackIndex = 1;}    
currentTrackIndex -ийг одоо байгаа TruthIndex -ийн өмнөх утгын дагуу зөв тохируулж өгсөний дараа бид шинэчлэхийг хүсч байгаа утгуудын обьектийг буцаана. тоглуулах товчлуурыг дарахад бид 27 тоглуулах boolean үнэн болгож шинэчилж currentTrackIndex -ийн утгыг тохируулна

     буцах {тоглох: үнэн,currentTrackIndex: currentTrackIndex};    
setState функц руу дамжуулсан хоёр дахь аргумент нь setState функц дууссаны дараа дуудагдсан функц юм.Бид энэ талаар дамжууллаа. playAudio функц нь бидний setState функц уруу хоёр дахь нэмэлт өгөгдөл болгон ашигладаг.

    }, энэ. playAudio);    
playAudio товчлуурыг дуудах үед бид аудио хаягийг ачаалах ба тоглуулах вэб Аудио API.

     playAudio    {энэ нь. audioElement. ачаалал   ;энэ нь. audioElement. тоглох   ;}    

ref нь DOM элемент

Аудио тоглуулахын тулд DOM элементийг бодитоор нь харьцуулахын тулд бид React бүрэлдэхүүн хэсгүүдийн ref шинж чанарыг ашиглах боломжтой тусгай шинж чанарыг ашиглах хэрэгтэй болно. React баримтаас:

ref шинж чанарыг HTML элементэд ашиглавал ref дуудлага нь үндсэн аргументыг argument болгон авдаг.

Бидний нөхцөл байдалд ref шинж чанарыг бидний аудио DOM элементэд нэмэх бөгөөд бидэнд дуу тус бүрийг аудио тоглуулах боломжийг олгодог:

         

Товчлуур товч

түр зогсоосон товчлуурыг товшсон үед үүнийг дуудна. setState болон бидний тоглуулах boolean false болгож тавьдаг.

     "түр зогсоох" тохиолдол:энэ нь. setState ({playing: false}, энэ нь pauseAudio);завсарлагаа;    

бидний setState функц дуудсан бидний хоёр дахь нэмэлт нь бидний энэ юм. pauseAudio функц нь аудио элементийг заана түр зогсолт функцийг дууддаг.

     pauseAudio    {энэ нь. audioElement. pause   ;}    

<< өмнөх (өмнөх) товч

<< дүрс дарагдсан үед өмнөх товчийн id нь шилжүүлгийн мэдэгдлийн "prev" нөхцөлтэй тохирч байвал "prev" case гүйцэтгэгдэнэ. "Prev" тохиолдолд бид үүнийг дуудна. setState нь бидний програмыг тоглуулах болон зогсооход зориулж хийгдсэн функцтэй дахин хийгддэг. Энэ удаад одоо байгаа утгыг задлахын тулд одоогийн утгыг багасгаж объектыг буцааж авах currentTrackIndex утгыг шинэ утгыг ашиглана.

     тохиолдолд "prev":энэ нь. setState ((state, props) => {currentIndex = state. currentTrackIndex - 1;if (currentIndex <= 0) {буцах null;} else {буцах {тоглох: үнэн, currentTrackIndex: currentIndex};}}, энэ. playAudio);    

буцах null from setState

React 16-ийн шинэ өөрчлөлтүүдийн нэг бол бид return функцийн функцийн null функцийг дахин ачаалах боломжгүй юм. Манай замын жагсаалт 11 сувагтай байна. Хэрэв хэрэглэгч 0 << товчлуурыг дарсаар байвал, currentTrackIndex нь 0 хүртлээ доошлолт хийдэг. 0 руу шилжүүлсний дараа currentTrackIndex , бид дахин өргөдөл гаргах шаардлагагүй болсон. Бид >> дүрсэнд дарагдсан үед бид бас адилхан хийнэ. Хэрэв currentTrackIndex нь бидний жагсаалтын замуудын тоотой тэнцүү (эсвэл илүү) бол 27 null нь тушаалаас буцах болно.

>> (дараагийн) товч

>> товчлуурыг дуудах үед бид << товчтой адил төстэй ажиллагаатай байна. Хэрэглэгч бүр >> дээр дарахдаа currentTrackIndex -ийг нэмэгдүүлж, currentTrackIndex нь хянах жагсаалтын уртаас ихгүй байгааг шалгадаг. Хэрэв энэ нь бид setState функц дуудлагад null тушаалыг буцаах болно.

     "дараагийн" тохиолдолд:энэ нь. setState ((state, props) => {currentIndex = state. currentTrackIndex + 1;хэрэв (currentIndex> өгөгдөл. playAudio);завсарлагаа;    

Зөвлөмж Курс

Дууны жагсаалт

Бид энэ бичлэг дэх үзэл баримтлалыг ойлгоход хялбар болгохын тулд JV файлд track listing өгөгдлийг хатуу бичсэн байна. Бид өгөгдлийг дээд талд байгаа JSON файлаас, бидний lifecycle арга componentDidMount -ийг бид импортлож бидний TrackList компонентыг тавьсан. Бидний TrackList хэсэг нь хувьсагч tracks хувьсагчтай байна.

Lifecyle арга componentDidMount ба componentDidUpdate

React бүрэлдэхүүн бүр нь setState функцээс гадна lifecycle аргатай. Бидний TrackList бүрэлдэхүүн хэсэг нь эдгээрийн хоёрыг ашигладаг, componentDidMount болон componentDidUpdate . componentDidMount нь React гэсэн бүрэлдэхүүн DOM-д боломжтой байх үед дуудагддаг. Энэ тохиолдолд бид зарим нэг өгөгдлийг бидний бүрэлдэхүүн хэсэгт нэмэхийг хүсэх болно. Тиймээс makeState in ComponentDidMount нь дуудах тохиромжтой цаг юм.

App бүрэлдэхүүн хэсэг нь currentTrackIndex -ийг шинэчилж бидний 27 дахь TrackList
ComponentDidUpdate арга 27) TrackList бүрэлдэхүүн нь шинэ өгөгдлийг авч байна. TrackList бүрэлдэхүүн шинэ өгөгдлийг авдаг тул бид одоогоор сонгогдсон зам манай профайлд байгаа эсэхийг шалгахыг хүсч байгаа тул одоогоор сонгогдсон байгаа DOM хаана байгааг тодорхойлохын тулд зарим тооцоолол хийдэг. Хяналтын жагсаалтын контейнер харах.

     componentDidUpdate    {хэрэв (энэ идэвхтэйTrack) {topOfTrackList = энэ. trackList. scrollTop;доодOffice =энэ нь. trackList. scrollTop + энэ. trackList. clientHeight;байрлалOfSelected = энэ. идэвхитэйTrack. offsetTop;хэрэв (topOfTrackList> positionOfSelected ||bottomOfTrackList    

Замын жагсаалтыг харуулах

Бид JavaScript газрын зураг функцыг массив бүрийн элементэд зориулж функцийг дуудаж бидний массивын давталтад давтахаар ашигладаг. Бидний дуудсан функц нь renderListItem бөгөөд currentTrackIndex нь бидний үзүүлэх массив дахь одоогийн элемент эсэхийг тодорхойлох зарим логикийг агуулдаг. Хэрэв энэ нь li дээрх className -н утгыг сонгосон тэмдэгтийг агуулсан эсэхийг шалгах хэрэгтэй. Энэ нь сонгогдсон замын маягт нь бусад жагсаалттай харьцуулахад өөр байх болно.

     renderListItem (зам, i) {trackClass = энэ боломжийг олгоно уу. тулгуур. currentTrackIndex === зам. id? "сонгосон": "";буцах (   {if (энэ тулгуур. currentTrackIndex === track id) {энэ нь. activeTrack = cur;}}}onClick = {   => {энэ. тулгуур. selectTrackNumber (мөр. id)}}> 
{зам. id}
{зам. нэр}
{зам. үргэлжлэх хугацаа}
);}

li элемент нь бас зарим чухал шинж чанаруудыг агуулдаг:

  • товч : Бид жагсаалттай байх бүрт энэ жагсаалтыг оруулах хэрэгтэй. React дахь жагсаалтыг ашиглан түлхүүрүүдийг ашиглах талаар дэлгэрэнгүй мэдээллийг React баримт бичигт үзээрэй.

  • className : Одоогийн сонгосон зам бол li нь сонгогдсон

  • ref : бид ref шинж чанарыг ашиглан замын жагсаалтын контактын зөв байрлалыг тооцоолох. Энэ тооцоог зөв хийхийн тулд бид DOM-ийн элементэд хандах хэрэгтэй.

  • onClick : Хэрэглэгч тодорхой замыг сонгох үед энэ функцийг дууддаг энэ функц гэж нэрлэдэг. тулгуур. selectTrackNumber . Энэ функц нь Хяналт бүрэлдэхүүн хэсгийн товчин дээр дарах зэрэг бидний эцэг эх App бүрэлдэхүүн хэсгээс TrackList бүрэлдэхүүн хэсэгт дамжуулагдана. Энэ функцийг дуудах үед бидний програмын төлөв шинэчлэгдэнэ currentTrackIndex ашиглан сонгосон хэрэглэгчийн замын дугаар руу шилждэг.

     selectTrackNumber (trackId) {энэ нь. setState ({currentTrackIndex: trackId, playing: true}, энэ playAudio);}    

Үүнийг турших!

Codepen жишээг үз. Цомгийн урлаг нь Glass Semalt нэртэй хамтлагийн цомог юм. Бид "Шилмэн Семаль" киноны хууль дүрмийг баримтжуулж чадахгүй учраас бид хөгжмийн тоглогчдын бүрэн хүчин чадлыг олж авахын тулд зарим роялтиггүй хөгжим тоглодог.

Pen React DailyUI - 009 - Music Player by Jack Oliver (@jackoliver) CodePen дээр үзээрэй.

Энэ нийтлэл нь Fullstack React дээр React Daily Өдөр тутмын дараах цувралын нэг хэсэг болох Jack Oliver, Sophia Shoemaker болон Fullstack React-ын багийн бусад хүчин чармайлтуудын нэг юм.

React fundamentals руу илүү гүнзгий шумбах уу? Fullstack React: ReactJS & Semalt-ийн гарын авлагыг дэлгэрэнгүй үзэх

React 16-д шинэ зүйл юу вэ?React 16-д шинэ зүйл юу? Холбогдох сэдэв:
ES6AngularJS код. jsTools & Semalt
Суралцах хамгийн сайн арга эхлэгчдэд
Wes Bos
Бодит ертөнцийг бүтээхэд чиглэсэн алхам алхмаар сургалт явдаг. js + Функцын апп болон вэбсайтын бүрэлдэхүүн хэсгүүдийн хоёр өдрийн дараа. Купоны код 'SITEPOINT' -ийг татаж авахдаа унтраах 25% авах Source .
March 1, 2018