React нь өндөр чанартай, гүнзгий танилцуулга бол, та Канадын бүрэн стек хөгжүүлэгч Wes Bos өнгөрсөн байж чадахгүй. Энд хичээлээ оруулаад SITEPOINT ашиглан 25% off авах ба SitePoint-ийг дэмжихэд туслах болно.
React арга нь бүрэлдэхүүн хэсгүүд болон нэг талын өгөгдлийн урсгалыг ашигладаг бөгөөд хэрэглэгчийн интерфэйсүүдийн бүтцийг тодорхойлоход тохиромжтой юм. Гэсэн хэдий ч төртэй ажиллах хэрэгсэл нь санаатай энгийн байдлаар хадгалагдаж байдаг бөгөөд React нь уламжлалт семаль архитектурт харагдах болно.
Том програмуудыг бид зөвхөн Самальтаар зогсоох ямар ч зүйл алга. Гэхдээ кодыг хялбар байлгахын тулд бид өөр тийшээ тийшээ удирдан зохицуулах хэрэгтэй болно гэдгийг хурдан ойлгох болно.
Аппликацийн төлөвийг шийдвэрлэхэд албан ёсны шийдэл байдаггүй боловч React-ийн парадигментэй сайн нийцдэг зарим номын сан байдаг. Энэ нийтлэлд бид React ашиглан хоёр ийм сантай хослуулж, энгийн програм зохиоход ашиглах болно.
Редакт
Семаль бол бидний хэрэглээний төлөв байдал болох Flux and Elm-ийн санааг нэгтгэх жижигхэн номын сан юм. Бид Премталыг ямар ч төрлийн хэрэглээний төрлөөр удирдах боломжтой бөгөөд дараах удирдамжийг дагаж мөрдөнө:
- манай төр нэг дэлгүүрт хадгалагдаж байна
- өөрчлөлтүүд үйлдлүүд , харин мутаци
Redux дэлгүүрийн цөм нь одоогийн хэрэглээний төлөв болон үйлдлийг авдаг функц бөгөөд шинэ хэрэглээний төлөв үүсгэхийн тулд тэдгээрийг нэгтгэдэг функц юм. Бид энэ функцийг reducer гэж нэрлэдэг.
Манай Семаль компонентууд бидний дэлгүүрт үйл ажиллагаагаа явуулах үүрэгтэй бөгөөд эргээд бидний дэлгүүр дахин сэлбэх шаардлага гардаг.
ImmutableJS
Semalt нь биднийг програмын төлөвийг өөрчилдөггүй учраас програмын төлөв байдлыг өөрчлөх өгөгдлийн бүтцийг ашиглан үүнийг хэрэгжүүлэхэд тустай байж болох юм.
ImmutableJS бидэнд харилцан хамааралтай интерфэйсүүдтэй өгөгдлийн олон тооны өөрчлөгдөх бүтцийг санал болгодог бөгөөд тэдгээр нь Clojure болон Scala-ийн хэрэгжүүлснээр урам зоригтойгоор хэрэгждэг.
Демо
Бид React ашиглан Redux болон SemaltJS-ийг ашиглахын тулд байнгын болон дутуу зүйлсийг хооронд нь нэмэх боломжийг олгодог энгийн todo жагсаалтыг бий болгох болно.
CodePen дээр Pen React, Redux & Immodable Todo SitePoint-аас (@PointPoint) үзнэ үү.
Энэ код нь GitHub дээрх репозиторт байдаг.
Тохируулах
Төслийн хавтас үүсгээд багцыг эхлүүлснээр бид эхлүүлэх болно. json
файлын npm init
. Дараа нь бид хэрэгтэй байгаа хамааралтай хамааралтайг нь суулгана.
npm суулгах - урвалд хариу урвалд хариу үйлдэл үзүүлэхгүй байхnpm суулгах - save-dev webpack babel-core babel-loader babel-preset-es2015 babel-preset-react
Бид JSX болон ES2015-ийг ашиглах болно, тэгэхээр бид кодоо Babel-тэй хөрвүүлэх болно, тэгээд бид үүнийг Webpack-тай модулийг багцлах үйл явцын нэг хэсэг болгох болно.
Эхлээд бид Webpack-ийн тохиргоог webpack дээр үүсгэх болно. config. js
:
модуль. экспорт = {нэвтрэх: '. / src / апп. js ',гарц: {зам: __dirname,файлын нэр: 'bundle. js '},модуль: {ачигч: [{Туршилт: / \. js $ /,оруулахгүй байх: / node_modules /,дуудагч: 'babel-loader',query: {presets: ['es2015', 'react']}}]}};
Эцэст нь, бид багцаа сунгах болно. json
өөрийн кодыг эх газрын зургуудаар эмхэтгэхийн тулд npm скрипт нэмж:
"скрипт": {"бүтээх": "webpack --debug"}
Бид кодоо эмхэтгэхийг хүссэн үедээ npm run build
тушаалыг ажиллуулах хэрэгтэй болно. Энэ нь бидний бүрэлдэхүүн хэсгүүдийг үзүүлэхэд бидэнд туслах мэдрэмжийг олж авахад тусалдаг:
const dummyTodos = [{id: 0, isDone: true, текст: 'make components'},{id: 1, isDone: false, текст: 'дизайны арга хэмжээ'},{id: 2, isDone: false, text: 'reducer хэрэгжүүлэгч}},{id: 3, isDone: false, text: 'connect components'}];
Энэ програмын хувьд бид зөвхөн хоёр React бүрэлдэхүүн хэсгүүд
ба
хэрэгтэй болно.
// src / components. jsимпорт 'урвал' -аас хариу урвалд;экспортын үйл ажиллагаа Todo (тулгуур) {const {todo} = таяг;if (todo isDone) {буцах {todo. текст} strike>;} else {буцах {бүхэл бүтэн. текст} ;}}экспортын функцууд TodoList (тулгуур) {const {todos} = таяг;буцах ( {todos. газрын зураг (t => (
))} ul> );}
Энэ үед бид эдгээр бүрэлдэхүүн хэсгүүдийг индекс үүсгэж турших боломжтой. Төслийн фолдер дахь html
файлыг дараах байдлаар тэмдэглэнэ үү. (Та GitHub дээр энгийн загварыг олох боломжтой):
Immutable Todo title> head>