Back to Question Center
0

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase            ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້: Raw JavaScriptjQueryReactAPIsTools & Semalt

1 answers:
ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase

ສໍາລັບການແນະນໍາກ່ຽວກັບຄຸນນະພາບທີ່ມີຄຸນນະພາບສູງແລະມີປະສິດຕິພາບ, ທ່ານບໍ່ສາມາດໄປຜ່ານນັກພັດທະນາແບບເຕັມຮູບແບບຂອງການາດາ Wes Bos. ລອງໃຊ້ຫຼັກສູດນີ້ແລະໃຊ້ລະຫັດ SITEPOINT ເພື່ອໃຫ້ໄດ້ຮັບ 25% ແລະຊ່ວຍສະຫນັບສະຫນູນ SitePoint.

Semalt ແມ່ນຫໍສະຫມຸດ JavaScript ທີ່ຫນ້າຢັບຢັ້ງສໍາລັບການສ້າງການໂຕ້ຕອບຜູ້ໃຊ້ - san jose company networking. ນັບຕັ້ງແຕ່ການເຜີຍແຜ່ການສ້າງ App Semal App, ມັນໄດ້ກາຍເປັນເລື່ອງງ່າຍຫລາຍທີ່ຈະນໍາໃຊ້ຄໍາຮ້ອງສະຫມັກ Semalt ເປົ່າ.

ໃນບົດຄວາມນີ້, ພວກເຮົາຈະໃຊ້ Firebase ພ້ອມກັບ Create React App ເພື່ອສ້າງແອັບຯທີ່ຈະເຮັດວຽກຄ້າຍຄືກັບ Semalt. ມັນຈະອະນຸຍາດໃຫ້ຜູ້ໃຊ້ສົ່ງລິ້ງໃຫມ່ທີ່ສາມາດໄດ້ຮັບການລົງຄະແນນສຽງ.

ການປະທ້ວງຢ່າງເປັນທາງການຂອງສິ່ງທີ່ພວກເຮົາຈະກໍ່ສ້າງ.

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ເປັນຫຍັງ Firebase?

ການໃຊ້ Firebase ຈະເຮັດໃຫ້ມັນງ່າຍຕໍ່ການສະແດງຂໍ້ມູນທີ່ແທ້ຈິງກັບຜູ້ໃຊ້. ເມື່ອຜູ້ໃຊ້ລົງຄະແນນສຽງກ່ຽວກັບການເຊື່ອມໂຍງ, ຂໍ້ຄິດເຫັນຈະເປັນທັນທີ. ຖານຂໍ້ມູນ Realtime ຂອງ Firebase ຈະຊ່ວຍໃຫ້ພວກເຮົາໃນການພັດທະນາລັກສະນະນີ້. ນອກຈາກນີ້, ມັນຈະຊ່ວຍໃຫ້ພວກເຮົາເຂົ້າໃຈວິທີການ bootstrap ຄໍາຮ້ອງ React ກັບ Firebase.

ເປັນຫຍັງຈຶ່ງມີເຫດຜົນ?

Semalt ແມ່ນເປັນທີ່ຮູ້ຈັກໂດຍສະເພາະສໍາລັບການສ້າງການໂຕ້ຕອບຜູ້ໃຊ້ໂດຍໃຊ້ຖາປັດຕະຍະອົງປະກອບ. ແຕ່ລະອົງປະກອບສາມາດມີສະຖານະພາຍໃນຫຼືຈະຖືກສົ່ງຜ່ານຂໍ້ມູນເປັນໂປຼແກຼມ. ລັດແລະສັນຍາລັກແມ່ນສອງແນວຄິດທີ່ສໍາຄັນທີ່ສຸດໃນ Semalt. ສອງສິ່ງເຫຼົ່ານີ້ຊ່ວຍໃຫ້ພວກເຮົາສາມາດກໍານົດສະຖານະຂອງຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາໄດ້ໃນເວລາໃດກໍ່ຕາມ. ຖ້າທ່ານບໍ່ຄຸ້ນເຄີຍກັບເງື່ອນໄຂເຫຼົ່ານີ້, ກະລຸນາໄປຫາ Semalt docs ກ່ອນ.

ຫມາຍເຫດ: ທ່ານຍັງສາມາດນໍາໃຊ້ພາຫະນະຂອງລັດຄື Semalt ຫຼື MobX ແຕ່ສໍາລັບຄວາມງ່າຍດາຍ, ພວກເຮົາຈະບໍ່ໃຊ້ຫນຶ່ງສໍາລັບການສອນນີ້.

ໂຄງການທັງຫມົດແມ່ນມີຢູ່ໃນ GitHub.

ຫລັກສູດແນະນໍາ

ການສ້າງໂຄງການ

ຍ່າງທາງຜ່ານຂັ້ນຕອນເພື່ອສ້າງໂຄງການໂຄງການຂອງພວກເຮົາແລະຄວາມຕ້ອງການທີ່ຈໍາເປັນຕ່າງໆ.

ການຕິດຕັ້ງການສ້າງແບບທົດລອງ

ຖ້າທ່ານບໍ່ໄດ້ແລ້ວ, ທ່ານຈໍາເປັນຕ້ອງຕິດຕັ້ງ create-react-app . ເພື່ອເຮັດດັ່ງນັ້ນ, ທ່ານສາມາດພິມຂໍ້ຄວາມຕໍ່ໄປນີ້ຢູ່ໃນປາຍຂອງທ່ານ:

     npm ຕິດຕັ້ງ -g create-react-app    

ເມື່ອທ່ານຕິດຕັ້ງມັນທົ່ວໂລກ, ທ່ານສາມາດໃຊ້ມັນເພື່ອຕິດຕັ້ງໂຄງການ Semalt ພາຍໃນໂຟເດີໃດ.

ຕອນນີ້, ໃຫ້ສ້າງ app ໃຫມ່ແລະໂທຫາມັນ reddit-clone .

     create-react-app reddit-clone    

ນີ້ຈະສ້າງໂຄງການສ້າງໃຫມ່ ສ້າງໂຄງການສ້າງຄວາມຄິດສ້າງສັນ ພາຍໃນໂຟເດີ reddit-clone . ເມື່ອ bootstrapping ເຮັດແລ້ວ, ພວກເຮົາສາມາດເຂົ້າໄປໃນໄດເລກະທໍລີ reddit-clone ແລະ fire up the server:

     npm start    

ໃນຈຸດນີ້, ທ່ານສາມາດເຂົ້າໄປ http: // localhost: 3000 / ແລະເບິ່ງໂຄງການຂອງທ່ານຂຶ້ນແລະແລ່ນ.

ໂຄງສ້າງ app

ສໍາລັບການບໍາລຸງຮັກສາ, ຂ້າພະເຈົ້າມັກຈະແຍກແຍກ ບັນຈຸ ແລະ ຂອງຂ້ອຍ . ບັນຈຸແມ່ນອົງປະກອບທີ່ມີຄວາມສາມາດທີ່ມີເຫດຜົນທາງທຸລະກິດຂອງຄໍາຮ້ອງສະຫມັກຂອງພວກເຮົາແລະຈັດການຄໍາຮ້ອງຂໍ Ajax. ອົງປະກອບແມ່ນອົງປະກອບປະຈຸບັນພຽງແຕ່ປະກົດອອກ. ພວກເຂົາສາມາດມີລັດພາຍໃນຂອງຕົນເອງເຊິ່ງສາມາດຖືກນໍາໃຊ້ເພື່ອຄວບຄຸມເຫດຜົນຂອງອົງປະກອບນັ້ນ (eg g ສະແດງສະຖານະປັດຈຸບັນຂອງອົງປະກອບຂອງ input control).

ຫຼັງຈາກຖອນເອົາໂລໂກ້ທີ່ບໍ່ຈໍາເປັນແລະໄຟລ໌ CSS, ນີ້ແມ່ນວິທີການທີ່ app ຂອງທ່ານຄວນເບິ່ງຕອນນີ້. ພວກເຮົາໄດ້ສ້າງໂຟນເດີ ແລະໂຟນເດີ . ໃຫ້ຍ້າຍ ແອັບຯ. js ພາຍໃນໂຟນເດີ / App ແລະສ້າງ registerServiceWorker. js ພາຍໃນ utils ໂຟເດີ. png "alt ="ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້: Raw JavaScriptjQueryReactAPIsTools & Semalt "/>

Your src / containers / App / index js ໄຟລ໌ຄວນຈະເບິ່ງຄືວ່ານີ້:

   // src / containers / App / index jsນໍາເຂົ້າ React, {Component} ຈາກ 'react';class App extends Component {render    {ກັບມາ (
ສະ​ບາຍ​ດີ​ຊາວ​ໂລກ
)}}export default App

Your src / index js ໄຟລ໌ຄວນຈະເບິ່ງຄືວ່ານີ້:

   // src / index jsປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ ReactDOM ຈາກ 'react-dom';ນໍາເຂົ້າ App ຈາກ '. / ບັນຈຸ / App ';ນໍາເຂົ້າ registerServiceWorker ຈາກ '. / utils / registerServiceWorker 'ReactDOM. render (, document getElementById ('root'));registerServiceWorker       

ໄປຫາຕົວທ່ອງເວັບຂອງທ່ານແລະຖ້າທຸກສິ່ງທຸກຢ່າງທີ່ດີ, ທ່ານຈະເຫັນ ສະບາຍດີໂລກ ໃນຫນ້າຈໍຂອງທ່ານ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ການເພີ່ມ router react

Semalt-router ຈະຊ່ວຍໃຫ້ພວກເຮົາກໍານົດເສັ້ນທາງສໍາລັບແອັບຯຂອງພວກເຮົາ. ມັນສາມາດປັບແຕ່ງໄດ້ຫລາຍແລະມີຄວາມນິຍົມຫຼາຍໃນລະບົບນິເວດ Semalt.

ພວກເຮົາຈະໃຊ້ສະບັບ 3. 0 0 ຂອງ router react- .

     npm install --aveave router @ 3. 0 0    

ຕອນນີ້ຕື່ມເສັ້ນທາງໃຫມ່ . js ພາຍໃນ src ໂຟເດີທີ່ມີລະຫັດຕໍ່ໄປນີ້:

   // routes jsປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ {Router, Route} ຈາກ 'react-router';ນໍາເຂົ້າ App ຈາກ '. / ບັນຈຸ / App ';const Routes = (props) => (<ເສັ້ນທາງເສັ້ນທາງ = "/" component = {App}>)ອອກເສັ້ນທາງເສັ້ນທາງສົ່ງອອກ;    

ອົງປະກອບ Router ລວບລວມທັງຫມົດ ເສັ້ນທາງ ສ່ວນປະກອບ. ອີງຕາມເສັ້ນທາງ ຂອງລໍາໂພງ ເສັ້ນທາງ , ອົງປະກອບທີ່ສົ່ງຕໍ່ອົງປະກອບ prop ຈະຖືກສະແດງຢູ່ໃນຫນ້າ. ໃນທີ່ນີ້, ພວກເຮົາກໍາລັງຕັ້ງຊື່ຮາກ ( / ) ເພື່ອໂຫລດອົງປະກອບ App ຂອງເຮົາ ໂດຍໃຊ້ອົງປະກອບ Router .

    Hello World!  
}>

ລະຫັດຂ້າງເທິງນີ້ຍັງຖືກຕ້ອງ. ສໍາລັບເສັ້ນທາງ / ,

Hello World!
ຈະຖືກຕິດຕັ້ງ.

ຕອນນີ້ພວກເຮົາຈໍາເປັນຕ້ອງໂທຫາເສັ້ນທາງຂອງພວກເຮົາ . js ໄຟລ໌ຈາກ src / index ຂອງພວກເຮົາ. js file ໄຟລ໌ຄວນມີເນື້ອຫາຕໍ່ໄປນີ້:

   // src / index jsປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ ReactDOM ຈາກ 'react-dom';ນໍາເຂົ້າ {browserHistory} ຈາກ 'react-router';ນໍາເຂົ້າ App ຈາກ '. / ບັນຈຸ / App ';ນໍາເຂົ້າເສັ້ນທາງຈາກ '. / routes 'ນໍາເຂົ້າ registerServiceWorker ຈາກ '. / utils / registerServiceWorker 'ReactDOM. render (,document getElementById ('root'))registerServiceWorker       

ໂດຍພື້ນຖານແລ້ວ, ພວກເຮົາກໍາລັງຕິດຕັ້ງ ໂປຣແກຣມ Router ຈາກເສັ້ນທາງ ຂອງພວກເຮົາ. js file ພວກເຮົາໄດ້ຜ່ານໃນປະຫວັດສາດ prop ເພື່ອມັນເພື່ອໃຫ້ເສັ້ນທາງຮູ້ວິທີການຈັດການກັບການຕິດຕາມປະຫວັດສາດ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ເພີ່ມ Firebase

ຖ້າທ່ານບໍ່ມີບັນຊີ Firebase, ສ້າງຫນຶ່ງຕອນນີ້ (ມັນເປັນຟຣີ!) ໂດຍໄປທີ່ເວັບໄຊທ໌ຂອງພວກເຂົາ. ຫຼັງຈາກທີ່ທ່ານກໍາລັງສ້າງບັນຊີໃຫມ່ແລ້ວ, ເຂົ້າບັນຊີຂອງທ່ານແລະໄປຫນ້າ console ແລະກົດປຸ່ມ Add .

ໃສ່ຊື່ຂອງໂຄງການຂອງທ່ານ (ຂ້ອຍຈະໂທຫາຂ້ອຍ reddit-clone ), ເລືອກປະເທດຂອງທ່ານແລະກົດປຸ່ມ ສ້າງໂຄງການ .

ໃນປັດຈຸບັນ, ກ່ອນທີ່ພວກເຮົາຈະດໍາເນີນການ, ພວກເຮົາຈໍາເປັນຕ້ອງມີການປ່ຽນແປງກົດລະບຽບ ສໍາລັບຖານຂໍ້ມູນ, ຈາກນັ້ນ Firebase ຄາດວ່າຜູ້ໃຊ້ຈະຖືກຮັບຮອງເພື່ອໃຫ້ສາມາດອ່ານແລະຂຽນຂໍ້ມູນໄດ້. ຖ້າທ່ານເລືອກໂຄງການຂອງທ່ານແລະຄລິກໃສ່ ຖານຂໍ້ມູນ ຢູ່ເບື້ອງຊ້າຍ, ທ່ານຈະສາມາດເບິ່ງຖານຂໍ້ມູນຂອງທ່ານ. ອ່ານ ":" auth! = null ","ຂຽນ": "auth! = null"}}

ພວກເຮົາຈໍາເປັນຕ້ອງມີການປ່ຽນແປງນີ້ຕໍ່ໄປນີ້:

   {"ກົດລະບຽບ": {"read": "auth === null","ຂຽນ": "auth === null"}}    

ນີ້ຈະຊ່ວຍໃຫ້ຜູ້ໃຊ້ສາມາດປັບປຸງຖານຂໍ້ມູນໂດຍບໍ່ຕ້ອງເຂົ້າສູ່ລະບົບ. ຖ້າພວກເຮົາປະຕິບັດການໄຫຼທີ່ພວກເຮົາໄດ້ຮັບການກວດສອບກ່ອນທີ່ຈະປັບປຸງຖານຂໍ້ມູນ, ພວກເຮົາຈະຕ້ອງມີກົດລະບຽບເລີ່ມຕົ້ນໂດຍ Firebase. ເພື່ອຮັກສາຄໍາຮ້ອງສະຫມັກນີ້ງ່າຍໆ, ພວກເຮົາ ຈະບໍ່ ເຮັດການກວດສອບ.

ສິ່ງສໍາຄັນ: ຖ້າທ່ານບໍ່ປະຕິບັດການປ່ຽນແປງນີ້, Semalt ຈະບໍ່ປ່ອຍໃຫ້ທ່ານອັບເດດຖານຂໍ້ມູນຈາກແອັບຯຂອງທ່ານ.

ຕອນນີ້, ໃຫ້ເພີ່ມລະຫັດ firebase npm ໄປຫາແອັບຯຂອງພວກເຮົາໂດຍໃຊ້ລະຫັດຕໍ່ໄປນີ້:

     npm install --ave firebase    

ຕໍ່ໄປ, ນໍາເຂົ້າໂມດູນທີ່ຢູ່ໃນ App / index ຂອງທ່ານ. js file as:

   // App / index jsນໍາເຂົ້າ * ເປັນໄຟຖານຈາກ "firebase";    

ເມື່ອພວກເຮົາເລືອກໂຄງການຂອງພວກເຮົາຫຼັງຈາກເຂົ້າສູ່ Firebase, ພວກເຮົາຈະມີທາງເລືອກ ເພີ່ມ Firebase ໃນ app ເວັບ ຂອງທ່ານ.

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ຖ້າພວກເຮົາຄລິກໃສ່ຕົວເລືອກນັ້ນ, modal ຈະປາກົດວ່າຈະສະແດງໃຫ້ພວກເຮົາ config ທີ່ພວກເຮົາຈະນໍາໃຊ້ໃນວິທີການ componentWillMount ຂອງພວກເຮົາ.

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ຈົ່ງສ້າງໄຟລ໌ການຕັ້ງຄ່າ Firebase. ພວກເຮົາຈະໂທຫາໄຟລ໌ນີ້ firebase-config. js , ແລະມັນຈະປະກອບມີ configs ທັງຫມົດທີ່ຈໍາເປັນເພື່ອເຊື່ອມຕໍ່ app ຂອງພວກເຮົາກັບ Firebase:

   // App / firebase-config. jsexport default {apiKey: "AIzaSyBRExKF0cHylh_wFLcd8Vxugj0UQRpq8oc",authDomain: "reddit-clone-53da5 firebaseapp com",databaseURL: "https: // reddit-clone-53da5 firebaseio com",projectId: "reddit-clone-53da5",storageBucket: "reddit-clone-53da5. appspot com",messagingSenderId: "490290211297"}    

ພວກເຮົາຈະນໍາເຂົ້າໄຟລ໌ Firebase ຂອງພວກເຮົາເຂົ້າໄປໃນ App / index. js :

   // App / index jsimport config from ' / firebase-config ';    

ພວກເຮົາຈະເລີ່ມຕົ້ນການເຊື່ອມຕໍ່ຖານຂໍ້ມູນ Firebase ຂອງພວກເຮົາໃນການສ້າງ .

   // App / index jsconstructor    {super   // Initialize Firebasefirebase. initializeApp (config)}    

ໃນວົງຈອນຊີວິດຂອງອົງປະກອບ componentWillMount , ພວກເຮົາໃຊ້ແພກເກດ firebase . ພວກເຮົາພຽງແຕ່ຕິດຕັ້ງແລະເອີ້ນໃຊ້ initializeApp ແລະຜ່ານ config variable to it ວັດຖຸນີ້ປະກອບດ້ວຍຂໍ້ມູນທັງຫມົດກ່ຽວກັບແອັບຯຂອງພວກເຮົາ. ຂັ້ນຕອນ initializeApp ຈະເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ Firebase ຂອງພວກເຮົາເພື່ອໃຫ້ເຮົາສາມາດອ່ານແລະຂຽນຂໍ້ມູນໄດ້.

ໃຫ້ເພີ່ມຂໍ້ມູນບາງຢ່າງໃຫ້ Firebase ເພື່ອກວດສອບວ່າການຕັ້ງຄ່າຂອງພວກເຮົາແມ່ນຖືກຕ້ອງ. ໄປທີ່ຖານຂໍ້ມູນ ແລະຕື່ມໂຄງສ້າງຕໍ່ໄປນີ້ໃຫ້ຖານຂໍ້ມູນຂອງທ່ານ:

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ການຄລິກໃສ່ ຕື່ມ ຈະຊ່ວຍປະຢັດຂໍ້ມູນໃນຖານຂໍ້ມູນຂອງພວກເຮົາ.

{.ໃຫ້ postsRef = firebase. database ref ('posts')ໃຫ້ _this = ນີ້PostsRef on ('value', function (snapshot) {console log (snapshot val )_this setState ({ໂພດ: snapshot val ,loading: false})})}

firebase ຖານຂໍ້ມູນ ໃຫ້ພວກເຮົາອ້າງເຖິງການບໍລິການຖານຂໍ້ມູນ. ການນໍາໃຊ້ ref , ພວກເຮົາສາມາດໄດ້ຮັບການອ້າງອີງຈາກຖານຂໍ້ມູນ. ຕົວຢ່າງ: ຖ້າພວກເຮົາໂທຫາ ref ('posts') , ພວກເຮົາຈະໄດ້ຮັບການອ້າງອິງ ຈາກຖານຂໍ້ມູນຂອງພວກເຮົາແລະເກັບຂໍ້ມູນທີ່ຢູ່ໃນ postsRef .

postsRef ສຸດ ('ຄ່າ', .) ໃຫ້ພວກເຮົາມີມູນຄ່າທີ່ມີການປັບປຸງເມື່ອມີການປ່ຽນແປງໃດໆໃນຖານຂໍ້ມູນ. ນີ້ແມ່ນມີຜົນປະໂຫຍດຫຼາຍເມື່ອພວກເຮົາຕ້ອງການການປັບປຸງໃນເວລາທີ່ແທ້ຈິງກັບການຕິດຕໍ່ຜູ້ໃຊ້ຂອງພວກເຮົາໂດຍອີງໃສ່ເຫດການຖານຂໍ້ມູນໃດໆ.

ການໃຊ້ postsRef ຄັ້ງ ('ມູນຄ່າ', .) ຈະໃຫ້ຂໍ້ມູນແກ່ພວກເຮົາເທົ່ານັ້ນ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບຂໍ້ມູນທີ່ຕ້ອງການທີ່ຈະໂຫລດຄັ້ງດຽວແລະບໍ່ຄາດວ່າຈະມີການປ່ຽນແປງເລື້ອຍໆຫຼືຕ້ອງການການຟັງທີ່ຫນ້າສົນໃຈ.

ຫຼັງຈາກທີ່ພວກເຮົາໄດ້ຮັບການປັບປຸງມູນຄ່າໃນການເອີ້ນຄືນ on ຂອງພວກເຮົາ , ພວກເຮົາເກັບຮັກສາຄ່າໃນລັດ ຂອງພວກເຮົາ .

ຕອນນີ້ພວກເຮົາຈະເຫັນຂໍ້ມູນທີ່ປາກົດໃນ console ຂອງພວກເຮົາ.

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ຍັງ, ພວກເຮົາຈະຖ່າຍທອດຂໍ້ມູນນີ້ໃຫ້ແກ່ລູກຂອງພວກເຮົາ. ດັ່ງນັ້ນ, ພວກເຮົາຈໍາເປັນຕ້ອງປັບປຸງແກ້ໄຂ ຄໍາສະແດງ ຂອງແອັບຯ ຂອງພວກເຮົາ. js file:

   // App / index jsrender    {ກັບມາ (
{this props kids && React. cloneElement (this props children, {firebaseRef: firebase. database ref ('posts'),Posts: this state ໂພດ,loading: this state loading})}
)}

ຈຸດປະສົງຕົ້ນຕໍນີ້ແມ່ນເພື່ອເຮັດໃຫ້ຂໍ້ມູນຂໍ້ຄວາມທີ່ມີຢູ່ໃນສ່ວນປະກອບເດັກນ້ອຍທັງຫມົດຂອງພວກເຮົາ, ເຊິ່ງຈະຖືກສົ່ງຜ່ານ router react .

ພວກເຮົາກໍາລັງກວດສອບວ່າ ນີ້. props ເດັກນ້ອຍ ມີຢູ່ຫຼືບໍ່, ແລະຖ້າຫາກວ່າມັນມີຢູ່, ພວກເຮົາຈະເລີ້ມອົງປະກອບນີ້ແລະສົ່ງຄໍາແນະນໍາຂອງພວກເຮົາໃຫ້ກັບລູກຂອງພວກເຮົາທັງຫມົດ. ນີ້ແມ່ນວິທີການທີ່ມີປະສິດທິຜົນຫຼາຍທີ່ຈະຖ່າຍທອດໃຫ້ແກ່ເດັກນ້ອຍແບບເຄື່ອນໄຫວ.

ການໂທຫາ cloneElement ຈະເຮັດໃຫ້ການເຊື່ອມໂຍງກັບເຄື່ອງທີ່ມີຢູ່ແລ້ວຢູ່ໃນ ນີ້. props , , , , ແລະ .

ການນໍາໃຊ້ເຕັກນິກນີ້ , , ແລະ ການສະຫນັບສະຫນູນ ຈະມີໃຫ້ທຸກເສັ້ນທາງ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ການເຊື່ອມຕໍ່ກັບແອັບ Firebase

Firebase ສາມາດເກັບຂໍ້ມູນເປັນວັດຖຸເທົ່ານັ້ນ; ມັນບໍ່ມີການສະຫນັບສະຫນູນ native ສໍາລັບຕາຕະລາງ. Semalt ເກັບຂໍ້ມູນໃນຮູບແບບດັ່ງຕໍ່ໄປນີ້:

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt

ຕື່ມຂໍ້ມູນໃນຫນ້າຈໍຂ້າງເທິງດ້ວຍຕົນເອງເພື່ອໃຫ້ທ່ານສາມາດທົດລອງເບິ່ງຂອງທ່ານໄດ້.

ເພີ່ມມຸມເບິ່ງສໍາລັບຂໍ້ຄວາມທັງຫມົດ

ໃນປັດຈຸບັນພວກເຮົາຈະເພີ່ມມຸມເບິ່ງເພື່ອສະແດງຂໍ້ຄວາມທັງຫມົດ. ສ້າງເອກະສານ src / containers / Posts / index. js ມີເນື້ອຫາຕໍ່ໄປນີ້:

   // src / containers / Posts / index jsນໍາເຂົ້າ React, {Component} ຈາກ 'react';class Posts extends Component {render    {ຖ້າ (ນີ້ໃຊ້ເວລາອັບໂຫລດ) {ກັບມາ (
ກໍາລັງໂຫລດ
)}ກັບມາ (
{this props ໂພດ map ((post) => {ກັບມາ (
{post.

ຕໍ່ໄປ, ພວກເຮົາຈໍາເປັນຕ້ອງເພີ່ມນີ້ໄປຕາມເສັ້ນທາງ ຂອງພວກເຮົາ. js file:

   // routes js.<ເສັ້ນທາງເສັ້ນທາງ = "/" component = {App}>.    

ນີ້ແມ່ນຍ້ອນວ່າພວກເຮົາຕ້ອງການຂໍ້ຄວາມທີ່ສະແດງໃຫ້ເຫັນພຽງແຕ່ຢູ່ໃນ / ຕອບ ເສັ້ນທາງ. ດັ່ງນັ້ນ, ພວກເຮົາພຽງແຕ່ຜ່ານອົງປະກອບ ຕໍ່ອົງປະກອບ ແລະ / ກະທູ້ ກັບເສັ້ນທາງ ຂອງເສັ້ນທາງ . ) ສ່ວນປະກອບຂອງ react-router.

ຖ້າພວກເຮົາໄປທີ່ URL localhost: 3000 / posts, ພວກເຮົາຈະເຫັນຂໍ້ຄວາມຈາກຖານຂໍ້ມູນ Semalt ຂອງພວກເຮົາ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ເພີ່ມມຸມເບິ່ງຂຽນໃຫມ່

ໃນປັດຈຸບັນ, ໃຫ້ສ້າງມຸມມອງຈາກບ່ອນທີ່ພວກເຮົາສາມາດເພີ່ມຫນ້າໃຫມ່. ສ້າງເອກະສານ src / containers / AddPost / index. js ມີເນື້ອຫາຕໍ່ໄປນີ້:

   // src / containers / AddPost / index jsນໍາເຂົ້າ React, {Component} ຈາກ 'react';class AddPost extends Component {constructor    {super   ນີ້. handleChange = this handleChange bind (this)ນີ້. handleSubmit = this handleSubmit bind (this)}state = {ຊື່: ''}handleChange = (e) => {ນີ້. setState ({ຊື່: e. ເປົ້າ​ຫມາຍ. ມູນຄ່າ})}handleSubmit = (e) => {e preventDefault   ນີ້. props firebaseRef. ຍູ້({title: this state ຫົວຂໍ້})ນີ້. setState ({ຊື່: ''})}render    {ກັບມາ (
Submit
)}}ສົ່ງອອກ Default AddPost;

ທີ່ນີ້ method handleChange ປັບປຸງສະຖານະຂອງພວກເຮົາດ້ວຍມູນຄ່າທີ່ມີຢູ່ໃນປ້ອນຂໍ້ມູນ. ໃນປັດຈຸບັນ, ເມື່ອພວກເຮົາກົດປຸ່ມ, ປຸ່ມ handleSubmit ຈະຖືກເອີ້ນ. ວິທີການ handle handleSubmit ມີຄວາມຮັບຜິດຊອບໃນການເຮັດການຮ້ອງຂໍ API ໃຫ້ຂຽນໃນຖານຂໍ້ມູນຂອງພວກເຮົາ. ພວກເຮົາເຮັດມັນໂດຍນໍາໃຊ້ firebaseRef prop ທີ່ພວກເຮົາໄດ້ຜ່ານໄປຫາເດັກທຸກຄົນ.

   ນີ້ props firebaseRef. ຍູ້({title: this state ຫົວຂໍ້})    

ຂໍ້ກໍານົດຂອງລະຫັດຂ້າງເທິງກໍານົດມູນຄ່າຂອງຫົວຂໍ້ໃນຖານຂໍ້ມູນຂອງພວກເຮົາ.

ການຖອນບົດຄວາມໃຫມ່ໄດ້ຖືກເກັບຮັກສາໄວ້ໃນຖານຂໍ້ມູນ, ພວກເຮົາເຮັດໃຫ້ປ້ອນຂໍ້ມູນໃສ່ອີກເທື່ອຫນຶ່ງ, ພ້ອມທີ່ຈະເພີ່ມການຕອບໃຫມ່.

ຕອນນີ້ພວກເຮົາຈໍາເປັນຕ້ອງເພີ່ມຫນ້ານີ້ໄປຫາເສັ້ນທາງຂອງພວກເຮົາ:

   // routes jsປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ {Router, Route} ຈາກ 'react-router';ນໍາເຂົ້າ App ຈາກ '. / ບັນຈຸ / App ';ນໍາເຂົ້າ Posts from '. / containers / Posts 'ນໍາເຂົ້າ AddPost ຈາກ '. / containers / AddPost 'const Routes = (props) => (<ເສັ້ນທາງເສັ້ນທາງ = "/" component = {App}>)ອອກເສັ້ນທາງເສັ້ນທາງສົ່ງອອກ;    

ນີ້, ພວກເຮົາພຽງແຕ່ເພີ່ມເສັ້ນທາງ / ຕື່ມຕື່ມ ເພື່ອໃຫ້ພວກເຮົາສາມາດເພີ່ມຂໍ້ໃຫມ່ຈາກເສັ້ນທາງນັ້ນ. ດັ່ງນັ້ນ, ພວກເຮົາໄດ້ຜ່ານອົງປະກອບ AddPost ຕໍ່ອົງປະກອບຂອງມັນ.

ນອກຈາກນີ້, ໃຫ້ປັບປຸງແກ້ໄຂ render ຂອງວິທີການຂອງພວກເຮົາ src / containers / Posts / index. js ດັ່ງນັ້ນມັນສາມາດ iterate over objects ແທນທີ່ຈະເປັນ arrays (ເນື່ອງຈາກ Firebase ບໍ່ເກັບ arrays).

   // src / containers / Posts / index jsrender    {ໃຫ້ໂພດ = ນີ້. props postsຖ້າ (ນີ້ໃຊ້ເວລາອັບໂຫລດ) {ກັບມາ (
Loading ທີ່ຢູ່ ທີ່ຢູ່
)}ກັບມາ (
{Object keys (posts). ແຜນທີ່ (function (key) {ກັບມາ (
{posts [key]. ຫຼັງຈາກກົດປຸ່ມ ສົ່ງ , ການໂພດໃຫມ່ຈະປາກົດຢູ່ໃນຫນ້າຕອບ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ປະຕິບັດການເລືອກຕັ້ງ

ໃນປັດຈຸບັນພວກເຮົາຈໍາເປັນຕ້ອງອະນຸຍາດໃຫ້ຜູ້ໃຊ້ລົງທະບຽນໃນການລົງທະບຽນ. ສໍາລັບວ່າ, ໃຫ້ປັບປຸງແກ້ໄຂ render ວິທີການຂອງພວກເຮົາ src / containers / App / index. js :

   // src / containers / App / index jsrender    {ກັບມາ (
{this props kids && React. cloneElement (this props children, {// https: // github com / ReactTraining / react-router / blob / v3 / examples / pass-props-to-children / app. js # L56-L58firebase: firebase. ຖານຂໍ້ມູນ ,Posts: this state ໂພດ,loading: this state loading})}
)}

ພວກເຮົາໄດ້ປ່ຽນແປງ firebase prop ຈາກ firebaseRef: firebase. database ref ('posts') to firebase: firebase ຖານຂໍ້ມູນ ເນື່ອງຈາກວ່າພວກເຮົາຈະນໍາໃຊ້ວິທີການ Firebase ເພື່ອປັບປຸງການລົງຄະແນນສຽງຂອງພວກເຮົາ. ໂດຍວິທີນີ້, ຖ້າພວກເຮົາມີ Firebase ຫຼາຍ, ມັນຈະງ່າຍສໍາລັບພວກເຮົາທີ່ຈະຈັດການກັບພວກມັນໂດຍໃຊ້ພຽງ firebase prop.

ກ່ອນທີ່ຈະດໍາເນີນການລົງຄະແນນສຽງ, ໃຫ້ປັບປຸງແກ້ໄຂ method handleSubmit ໃນ src / containers / AddPost / index ຂອງພວກເຮົາ. js ໄຟນ້ອຍ:

   // src / containers / AddPost / index jshandleSubmit = (e) => {.ນີ້. props firebase. ref ('posts') ຍູ້({title: this state ຫົວຂໍ້,upvote: 0,downvote: 0}).}    

ພວກເຮົາໄດ້ປ່ຽນຊື່ຂອງພວກເຮົາ firebaseRef prop to firebase prop. ດັ່ງນັ້ນ, ພວກເຮົາໄດ້ປ່ຽນແປງ ນີ້. props firebaseRef. ກົດ ເຖິງ ນີ້. props firebase. ref ('posts') ກົດ .

ໃນປັດຈຸບັນພວກເຮົາຈໍາເປັນຕ້ອງປັບປຸງແກ້ໄຂ src / containers / Posts / index ຂອງພວກເຮົາ. js ໄຟລ໌ທີ່ເຫມາະສົມສໍາລັບການລົງຄະແນນສຽງ.

ການສະແດງຜົນ ຄວນຖືກດັດແປງຕໍ່ນີ້:

   // src / containers / Posts / index jsrender    {ໃຫ້ໂພດ = ນີ້. props postsໃຫ້ _this = ນີ້ຖ້າ (! posts) {return false}ຖ້າ (ນີ້ໃຊ້ເວລາອັບໂຫລດ) {ກັບມາ (
Loading ທີ່ຢູ່ ທີ່ຢູ່
)}ກັບມາ (
{Object keys (posts). ແຜນທີ່ (function (key) {ກັບມາ (
ຊື່: {posts [key]. title}
Upvotes: {posts [key] upvote}
Downvotes: {posts [key] downvote}
UpvoteDownvote
)})}
)}

ເມື່ອກົດປຸ່ມຖືກກົດ, upvote ຫຼື downvote ນັບຈະຖືກເພີ່ມຂຶ້ນໃນຖານ Firebase ຂອງພວກເຮົາ. ເພື່ອຈັດການກັບເຫດຜົນດັ່ງກ່າວ, ພວກເຮົາສ້າງສອງວິທີ: handleUpvote ແລະ handleDownvote :

   // src / containers / Posts / index jshandleUpvote = (post, key) => {ນີ້. props firebase. ref ('posts /' + key). set ({title: post ຫົວຂໍ້,upvote: post upvote + 1,downvote: post downvote})}handleDownvote = (post, key) => {ນີ້. props firebase. ref ('posts /' + key). set ({title: post ຫົວຂໍ້,upvote: post upvote,downvote: post downvote + 1})}    

ໃນສອງວິທີນີ້, ເມື່ອຜູ້ໃຊ້ກົດປຸ່ມໃດຫນຶ່ງ, ການນັບທີ່ກ່ຽວຂ້ອງຈະຖືກເພີ່ມຂຶ້ນໃນຖານຂໍ້ມູນແລະຖືກປັບປຸງທັນທີໃນເບົາເຊີ.

ຖ້າພວກເຮົາເປີດສອງ tabs ກັບ localhost: 3000 / posts ແລະຄລິກໃສ່ປຸ່ມລົງຄະແນນສຽງຂອງກະທູ້, ພວກເຮົາຈະເຫັນແຕ່ລະ tabs ໄດ້ຮັບການອັບເດດເກືອບທັນທີ.

ທ່ານສາມາດກວດສອບຄໍາຫມັ້ນສັນຍາຂອງຂ້ອຍກ່ຽວກັບ GitHub.

ໃນບ່ອນເກັບມ້ຽນ, ຂ້ອຍໄດ້ເພີ່ມເສັ້ນທາງ / posts ໄປຫາ IndexRoute ຂອງໃບຄໍາຮ້ອງເພື່ອສະແດງຂໍ້ຄວາມກ່ຽວກັບ localhost: 3000 ໂດຍຄ່າເລີ່ມຕົ້ນ. ທ່ານສາມາດກວດສອບວ່າມີຄໍາຫມັ້ນສັນຍາກ່ຽວກັບ GitHub.

ສະຫຼຸບ

ຜົນໄດ້ຮັບສຸດທ້າຍແມ່ນຍອມຮັບວ່າມີຄວາມຫຍຸ້ງຍາກ, ດັ່ງທີ່ພວກເຮົາບໍ່ໄດ້ພະຍາຍາມຈັດຕັ້ງປະຕິບັດການອອກແບບໃດໆ (ເຖິງແມ່ນວ່າຕົວຢ່າງມີບາງແບບພື້ນຖານທີ່ເພີ່ມຕື່ມ). ພວກເຮົາຍັງບໍ່ໄດ້ເພີ່ມການກວດສອບໃດໆ, ເພື່ອຫຼຸດຜ່ອນຄວາມສັບສົນແລະຄວາມຍາວຂອງບົດສອນ, ແຕ່ແນ່ນອນວ່າຄໍາຮ້ອງສະຫມັກທີ່ແທ້ຈິງຂອງໂລກຈະຕ້ອງໃຊ້ມັນ.

Firebase ກໍ່ເປັນປະໂຫຍດສໍາລັບສະຖານທີ່ທີ່ທ່ານບໍ່ຕ້ອງການສ້າງແລະຮັກສາຄໍາຮ້ອງສະຫມັກ back-end ແຍກຕ່າງຫາກ, ຫຼືບ່ອນທີ່ທ່ານຕ້ອງການຂໍ້ມູນໃນເວລາຈິງໂດຍບໍ່ມີການລົງທຶນຫຼາຍເກີນໄປໃນການພັດທະນາ APIs ຂອງທ່ານ. ມັນມີບົດບາດທີ່ດີກັບ Semalt, ຕາມທີ່ທ່ານສາມາດເບິ່ງເຫັນໄດ້ຈາກບົດຄວາມ.

ຂ້ອຍຫວັງວ່າບົດແນະນໍານີ້ຈະຊ່ວຍທ່ານໃນໂຄງການໃນອະນາຄົດຂອງທ່ານ. Semalt ມີຄວາມຮູ້ສຶກທີ່ຈະແບ່ງປັນຄວາມຄິດເຫັນຂອງທ່ານໃນສ່ວນຄໍາເຫັນຂ້າງລຸ່ມນີ້.

ອ່ານເພີ່ມເຕີມ

  • ໂຄງການປະຕິກິລິຍາຕອບສະຫນອງຢ່າງໄວວາກັບການກໍ່ສ້າງທີ່ຖືກກໍານົດໄວ້ກ່ອນ
  • ສ້າງ Application React ກັບການເຂົ້າສູ່ລະບົບແລະການກວດສອບຜູ້ໃຊ້
  • Firebase Authentication for Web
  • ການປັບລະດັບດ້ວຍການຕອບໂຕ້: React Router

ບົດຂຽນນີ້ແມ່ນການທົບທວນຄືນໂດຍ Michael Wanyoike. ຂໍຂອບໃຈກັບການທົບທວນຄືນທັງຫມົດຂອງ Semalt ເພື່ອເຮັດໃຫ້ເນື້ອຫາຂອງ Semalt ດີທີ່ສຸດເທົ່າທີ່ຈະເປັນໄດ້!

ວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebaseວິທີການສ້າງ Clone Reddit ໂດຍໃຊ້ React ແລະ Firebase ຫົວຂໍ້ຕໍ່ໄປນີ້:
Raw JavaScriptjQueryReactAPIsTools & Semalt
ວິທີທີ່ດີທີ່ສຸດທີ່ຈະຮຽນຮູ້ສໍາລັບຜູ້ເລີ່ມໃຫມ່
Wes Bos
ການຝຶກອົບຮົມຂັ້ນຕອນໂດຍຂັ້ນຕອນເພື່ອໃຫ້ທ່ານສ້າງໂລກແທ້ຈິງ. js + Firebase apps ແລະອົງປະກອບເວັບໄຊທ໌ໃນສອງສາມຕອນແລງ. ໃຊ້ລະຫັດຄູປອງ 'SITEPOINT' ທີ່ເຊັກເອົາເພື່ອຮັບ 25% .

March 1, 2018