Back to Question Center
0

ການເລີ່ມຕົ້ນດ້ວຍ React, GraphQL ແລະ Relay (ສ່ວນ 2 ຂອງ 2)            ການເລີ່ມຕົ້ນດ້ວຍ React, GraphQL ແລະ Relay (ສ່ວນ 2 ຂອງ 2) ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ: WebBrowsersProgrammingWeb SummitHTML & Semalt

1 answers:
ການເລີ່ມຕົ້ນດ້ວຍ React, GraphQL ແລະ Relay (ສ່ວນ 2 ຂອງ 2)

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

ການນໍາສະເຫນີ

ບົດຄວາມທີ່ຜ່ານມາໄດ້ຄົ້ນຄວ້າຂະບວນການພັດທະນາໂດຍລວມຂອງການເຮັດວຽກກັບ Semalt ແລະການປ່ຽນແປງຂອງເຄື່ອງແມ່ຂ່າຍ GraphQL - cctv supplies. ດ້ວຍການປົກປ້ອງຂໍ້ມູນ, ເຄິ່ງທີສອງຂອງຄໍາຮ້ອງສະຫມັກ React / GraphQL / Semalt ແມ່ນເພື່ອບໍລິໂພກມັນກັບຄໍາຮ້ອງສະຫມັກຂອງຕົວທ່ອງເວັບເວັບໄຊຕ໌ React-Semalt. ການບໍລິການ GraphQL ກັບ React ຜ່ານ Semalt ແມ່ນ tricky ໃນການຕິດຕັ້ງ. ເຕັກໂນໂລຢີແມ່ນຂ້ອນຂ້າງໃຫມ່, ເພາະສະນັ້ນ, ຈໍານວນຕົວຢ່າງ, ຄວາມແຈ່ມແຈ້ງຂອງເອກະສານ, ແລະສິ່ງທ້າທາຍທາງດ້ານເຕັກນິກ (ບໍ່ແມ່ນຂໍ້ບົກພ່ອງ). ຕົວຢ່າງທີ່ໄດ້ທົບທວນຢູ່ທີ່ນີ້ຈະເປັນຄໍາຮ້ອງສະຫມັກ CRUD (ສ້າງ, ອ່ານ, ອັບເດດ, ແລະລຶບ) ຢ່າງເຕັມທີ່. ນອກເຫນືອໄປຈາກການສອບຖາມຂໍ້ມູນ, ຈະມີຕົວຢ່າງຂອງສາມຊະນິດຂອງການປ່ຽນແປງເຊິ່ງຈະເປັນປະໂຫຍດແກ່ນັກພັດທະນາ Semalt ໃຫມ່ເພາະວ່າຕົວຢ່າງຂອງການປ່ຽນແປງແມ່ນຢູ່ໃນເວລາຂອງການຂຽນນີ້, ບໍ່ເທົ່າໃດແລະໄກ.

Application Tool Widget

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

  1. ຊື່
  2. ຄໍາອະທິບາຍ
  3. ສີ
  4. ຂະຫນາດ
  5. ຈໍານວນ
  6. ເຈົ້າຂອງ

ບັນຊີລາຍການແບບເລື່ອນລົງສໍາລັບເຈົ້າຂອງແມ່ນປະຊາກອນຈາກບັນຊີລາຍຊື່ທີ່ແຕກຕ່າງກັນຂອງເຈົ້າຂອງທັງຫມົດທີ່ມີເຄື່ອງຂອງເຈົ້າຂອງປັດຈຸບັນ.

ຕອບສະຫນອງແລະ Relay

ຄໍາຮ້ອງສະຫມັກ Semalt ແມ່ນບໍ່ມີຫຍັງຫຼາຍກວ່າ React components wrapped in Semalt Containers. Semalt Containers ອະທິບາຍຂໍ້ມູນທີ່ຕ້ອງການໂດຍສ່ວນປະກອບແລະ Semalt Root Containers ເຊື່ອມຕໍ່ກັບ Server GraphQL-Semalt ເພື່ອສອບຖາມແລະປ່ຽນຂໍ້ມູນ. ລາຍລະອຽດຂອງຄວາມຕ້ອງການຂໍ້ມູນແມ່ນໄດ້ຮັບຜົນສໍາເລັດໂດຍຜ່ານ Graphs fragments, ໃນຂະນະທີ່ປະເພດ schema ຮາກສໍາລັບການເຊື່ອມຕໍ່ແມ່ນລະບຸໂດຍຜ່ານ Semalt Route. ແນວຄິດ, ມັນເປັນການຕິດຕັ້ງທີ່ງ່າຍດາຍ. ສິ່ງທ້າທາຍແມ່ນຢູ່ໃນລາຍລະອຽດຂອງການຕິດຕັ້ງ, ແລະຄວາມເຂົ້າໃຈວ່າສິ່ງທີ່ Semalt ຕ້ອງຮູ້ເພື່ອປະຕິບັດງານຕ່າງໆ.

ການເລີ່ມຕົ້ນດ້ວຍ React, GraphQL ແລະ Relay (ສ່ວນ 2 ຂອງ 2)ການເລີ່ມຕົ້ນດ້ວຍ React, GraphQL ແລະ Relay (ສ່ວນ 2 ຂອງ 2) ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ:
WebBrowsersProgrammingWeb SummitHTML & Semalt

ແຫຼ່ງຂໍ້ມູນ: ປະຕິກິລິຍາ - ລະຫັດ Facebook

ພາບຂ້າງເທິງນີ້ຈາກບລັອກນີ້ສະແດງວິທີການທີ່ Relay ເຮັດວຽກກັບ React. ອົງປະກອບປະຕິບັດການກະທໍາໂດຍຜ່ານ API Relay's Store, ແລະ Relay Store ຈັດການກັບຄໍາຕອບຈາກເຄື່ອງແມ່ຂ່າຍ GraphQL. ຫນ້າສົນໃຈ, Relay ສະຫນັບສະຫນູນແນວຄວາມຄິດຂອງການປັບປຸງ optimistic, ເຊິ່ງອະນຸຍາດໃຫ້ການປ່ຽນແປງທີ່ຈະຖືກບັນທຶກໃນຮ້ານທີ່ຢືນຢັນການຢັ້ງຢືນສຸດທ້າຍຈາກເຄື່ອງແມ່ຂ່າຍ. ການປັບປຸງ optimistic ອະນຸຍາດໃຫ້ UI ໃຫ້ສັນຍານຜູ້ໃຊ້ວ່າການປັບປຸງໄດ້ເກີດຂຶ້ນ, ເຖິງແມ່ນວ່າມັນບໍ່ໄດ້. ການປະຕິເສດການຢຸດເຊົາການປະຕິເສດ, ຜູ້ໃຊ້ຈະຕ້ອງໄດ້ຮັບການແຈ້ງແລະ UI ໄດ້ປັບປຸງ.

ການສອບຖາມຂໍ້ມູນ

ການສອບຖາມຂໍ້ມູນຈາກເຊີຟເວີ GraphQL ທີ່ໃຊ້ Semalt-enabled ແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ, ໂດຍສະເພາະເມື່ອທຽບກັບການປ່ຽນແປງ. ເມື່ອອົງປະກອບທີ່ຈະບໍລິໂພກຂໍ້ມູນໄດ້ຖືກສ້າງຂື້ນ, ບ່ອນນັ່ງ Semalt ອະທິບາຍຂໍ້ມູນທີ່ຈໍາເປັນໂດຍສ່ວນປະກອບຖືກສ້າງຂຶ້ນ. ການຕັ້ງຄ່າບັນຈຸ, ອົງປະກອບທີ່ຖືກລວບລວມໂດຍມັນຕ້ອງໄດ້ລະບຸໄວ້ພ້ອມກັບຂໍ້ມູນທີ່ໄດ້ກໍານົດຂໍ້ມູນທີ່ຖືກສອບຖາມ.

    ນໍາເຂົ້າ Relay ຈາກ 'react-relay';ນໍາເຂົ້າ WidgetToolComponent ຈາກ '. ທີ່ຢູ່ / components / widget-tool ';export default Relay. QL'fragment on __Type {enumValues ​​{name description}} ',ຂະຫນາດ:    => Relay QL'fragment on __Type {enumValues ​​{name description}} ',viewer:    => Relay QL 'fragment on Viewer {idຜູ້ໃຊ້ (ຄັ້ງທໍາອິດ: 1000) {edges {node {idຊື່​ແທ້ນາມ​ສະ​ກຸນ}}}widgets (ທໍາອິດ: 1000) {edges {node {idຊື່ລາຍລະອຽດສີຂະຫນາດຈໍານວນເຈົ້າຂອງ {idຊື່​ແທ້ນາມ​ສະ​ກຸນ}}}}}'}})    

ສໍາລັບຄໍາຮ້ອງສະຫມັກນີ້, ຕ້ອງມີສາມຊິ້ນ. ສອງຂອງຊິ້ນແມ່ນຖືກນໍາໃຊ້ສໍາລັບການສອບຖາມ introspection, ໃນຄໍາສັ່ງເພື່ອການໂຫຼດຄຸນຄ່າສໍາລັບສອງ enums ທີ່ຖືກກໍານົດ: ສີແລະຂະຫນາດ. ຊິ້ນທີສາມແມ່ນສໍາລັບການສອບຖາມຂໍ້ມູນຄໍາຮ້ອງສະຫມັກສໍາລັບຜູ້ຊົມສະເພາະ. ໃນແອັບພລິເຄຊັນນີ້ມີພຽງຫນຶ່ງ viewer ທີ່ບໍ່ມີການຢືນຢັນ. ໃນແອັບພລິເຄຊັນທີ່ການກວດສອບແລະການອະນຸຍາດແມ່ນຖືກປະຕິບັດ, ຜູ້ຊົມຈະເປັນຕົວແທນຂອງຜູ້ໃຊ້ທີ່ແທ້ຈິງ, ແລະຂໍ້ມູນທີ່ຖືກສອບຖາມພາຍໃຕ້ viewer ຈະຖືກຈໍາກັດພຽງແຕ່ຂໍ້ມູນເຂົ້າເຖິງຜູ້ໃຊ້. ຂໍ້ຈໍາກັດນີ້ຈໍາເປັນຕ້ອງໄດ້ປະຕິບັດໃນເຊີຟເວີ SemaltQL.

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

ເມື່ອມີການກໍານົດ fragments, ເສັ້ນ Semalt ຈະຖືກນໍາໃຊ້ເພື່ອກໍານົດການສອບຖາມແລະທົ່ງນາເພື່ອປະຕິບັດການສອບຖາມ (ລວມທັງຊິ້ນສ່ວນ) ຕໍ່ຕ້ານ.

    ນໍາເຂົ້າ Relay ຈາກ 'react-relay';ການສົ່ງອອກຊັ້ນດີວີດີຂະຫຍາຍການເລື່ອນ. ເສັ້ນທາງ {static queries = {color:    => Relay QL'query {__type (name: "Color")} ',ຂະຫນາດ:    => Relay QL'query {__type (name: "Size")} ',viewer:    => Relay QL'query {viewer} '}static routeName = 'ViewerRoute'}    

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

    ປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ Relay ຈາກ 'react-relay';ນໍາເຂົ້າ ReactDOM ຈາກ 'react-dom';ນໍາເຂົ້າ WidgetToolContainer ຈາກ '. / containers / widget-tool-container ';ນໍາເຂົ້າ ViewerRoute ຈາກ '. / routes / viewer-route ';ReactDOM. render ( } />,document querySelector ('main'))    

ໃນແອັບພລິເຄຊັນນີ້, ຮາກຮາກຈະປະກອບໃສ່ WidgetToolContainer ໂດຍໃຊ້ຂໍ້ມູນທີ່ລະບຸໄວ້ໂດຍ ViewerRoute ແລະຊິ້ນສ່ວນທີ່ກໍານົດໄວ້ພາຍໃນ WidgetToolContainer .

Mutation ທໍາອິດ: Insert

ສ້າງຕັ້ງການປ່ຽນແປງຮຽກຮ້ອງໃຫ້ມີການສ້າງຊັ້ນຮຽນໃຫມ່ເຊິ່ງ inherits ຈາກ Relay. ການປ່ຽນແປງ , ສະຫນອງໃຫ້ໂດຍໂມດູນປະຕິກິຣິຍາ .

    ນໍາເຂົ້າ Relay ຈາກ 'react-relay';ການສົ່ງອອກຊັ້ນດີວີດີຂະຫຍາຍການເລື່ອນ. ການປ່ຽນແປງ {fragments ຄົງທີ່ = {viewer:    => Relay QL'fragment on Viewer {id} '}getMutation    {return relay QL'mutation {insertWidget} '}// more code here ທີ່ຢູ່. ຊັບສົມບັດ    ຊິ້ນ    ບອກລາຍການຂອງການປ່ຽນແປງຂໍ້ມູນຂອງການປ່ຽນແປງ. ໃນກໍລະນີນີ້, ການປ່ຽນແປງຂອງ widget ແມ່ນຂຶ້ນກັບຕົວລະຄອນຜູ້ຊົມ. ການປ່ຽນແປງແມ່ນຂຶ້ນຢູ່ກັບ ID ຜູ້ຊົມເນື່ອງຈາກວ່າຂໍ້ມູນທັງຫມົດທີ່ໄດ້ຮັບໃນແອັບພລິເຄຊັນແມ່ນໄດ້ມາຜ່ານສະພາບຂອງຜູ້ຊົມໃນປະຈຸບັນ. ດັ່ງນັ້ນ, ໃນເວລາທີ່ການປ່ຽນແປງໄດ້ຖືກປະຕິບັດ, Relay ຈະຮັບປະກັນວ່າຜູ້ຊົມໃຊ້ ID ຈະມີຢູ່ສະເຫມີ.  

ດ້ວຍການກໍາຫນົດຄ່າຊິ້ນ , ການໃຊ້ວຽກ getMutation ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າສໍາລັບການປ່ຽນແປງ. ຟັງຊັນ getMutation ກໍານົດຊື່ຂອງການປ່ຽນແປງ GraphQL ທີ່ຈະຖືກປະຕິບັດແລະຄວນກົງກັບຊື່ຂອງການປ່ຽນແປງໃນເຊີຟເວີ GraphQL.

ຟັງຊັນ getVariables ຈະຫັນປ່ຽນຂໍ້ມູນທີ່ໄດ້ຜ່ານການສ້າງຂອງການປ່ຽນແປງໄປສູ່ໂຄງສ້າງທີ່ຈໍາເປັນໂດຍເຄື່ອງແມ່ຂ່າຍ GraphQL ເພື່ອປະຕິບັດການປ່ຽນແປງ. ຂໍ້ມູນທີ່ຜ່ານເຂົ້າໃນການກໍ່ສ້າງແມ່ນມີຢູ່ໃນ props ຂອງວັດຖຸປ່ຽນແປງຂອງ Relay. ໃນກໍລະນີນີ້, ເຂດຂໍ້ມູນ widget ຖືກນໍາໃຊ້ເພື່ອສ້າງວັດຖຸ widget ໃຫມ່ ເປັນຊັບສົມບັດຂອງວັດຖຸວັດຖຸທີ່ຖືກສົ່ງໄປຫາການປ່ຽນແປງໃນເຄື່ອງແມ່ຂ່າຍ GraphQL. ວັດຖຸນີ້ ຕ້ອງສອດຄ່ອງກັບປະເພດ InputInsertWidget ທີ່ກໍານົດໄວ້ໂດຍເຄື່ອງ GraphQL.

    getVariables    {ກັບຄືນ {widget: {ຊື່: ນີ້. props ຊື່,ລາຍລະອຽດ: ນີ້. props ລາຍລະອຽດ,ສີ: ນີ້. props ສີ,size: this props ຂະຫນາດ,ຈໍານວນ: ນີ້. props ຈໍານວນ,ownerId: this props ownerId}}}    

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

    Relay ຮ້ານຄ້າ commitUpdate (new InsertWidgetMutation (ຈຸດປະສົງ. assign ({viewer: this props viewer, widget: null}, widget)))    
ໃນເວລາທີ່ commitUpdate ຖືກເອີ້ນວ່າ, ໃຫມ່ InsertWidgetMutation object ຖືກສ້າງແລະສົ່ງຜ່ານ. ຟັງຊັນ commitUpdate ຈະໃຊ້ getConfigs ແລະ getFatQuery ເພື່ອກໍານົດຂໍ້ມູນທີ່ຕ້ອງໄດ້ຮັບການປັບປຸງເພື່ອເຮັດສໍາເລັດການປ່ຽນແປງ. ໃນຂະນະທີ່ບໍ່ໄດ້ສະແດງຢູ່ທີ່ນີ້, ມັນກໍ່ສາມາດກໍານົດການປັບປຸງ optimistic ແລະຈັດການການປະທະກັນລະຫວ່າງການປ່ຽນແປງຫຼາຍໆຄັ້ງ. ຄຸນນະສົມບັດເຫຼົ່ານີ້ກໍ່ສະແດງໃຫ້ເຫັນຄວາມເຂັ້ມຂອງຄວາມຈິງຂອງ Relay ທີ່ຈະຈັດການກັບການປ່ຽນແປງຂໍ້ມູນທີ່ສະຫລາດ.

ສໍາລັບການປ່ຽນແປງ widget widget, ຊະນິດການຕັ້ງຄ່າແມ່ນ RANGE_ADD , ບ່ອນທີ່ widget ໃຫມ່ຖືກກໍານົດໄວ້ໃນຂອບຂອງ widget edges. ຊື່ການເຊື່ອມຕໍ່ກໍານົດຂອບເຂດຂອງຂອບທີ່ widget ຖືກເພີ່ມແລະກໍານົດຊື່ຂອງ Field GraphQL ເຊິ່ງຈະມີຂໍ້ມູນສໍາລັບຂອບຂອງ widget ໃຫມ່. ພຶດຕິກໍາຂອງລະດັບກໍານົດວິທີທີ່ widget ຈະຖືກເພີ່ມເຂົ້າໄປໃນລະດັບການປະພຶດດຽວຫຼືຫຼາຍປະເພດສາມາດກໍານົດໄດ້. ສໍາລັບການເຊື່ອມຕໍ່ຂອງ widget, ພຶດຕິກໍາຕົ້ນຕໍແລະມີພຽງແຕ່ແມ່ນ append ພຶດຕິກໍາ. ການປະຕິບັດລະດັບອື່ນແມ່ນ , , ບໍ່ສົນໃຈ , refetch , ແລະ ເອົາອອກ .

    getConfigs    {return [{ພິມ: 'RANGE_ADD',parentName: 'viewer',ພໍ່ແມ່: ນີ້. props viewer id,connectionName: 'widgets',edgeName: 'widgetEdge',rangeBehaviors: {'': 'append'}}]}    

getFatQuery ຖືກນໍາໃຊ້ເພື່ອດຶງຂໍ້ມູນທັງຫມົດທີ່ຕ້ອງການເພື່ອປັບປຸງຄໍາຮ້ອງສະຫມັກເມື່ອການປ່ຽນແປງໄດ້ຖືກສໍາເລັດ. ຊື່ InsertWidgetPayload ແມ່ນພຽງແຕ່ 'Payload' ທີ່ຖືກເພີ່ມເຂົ້າໄປໃນຕອນທ້າຍຂອງກໍລະນີທີ່ມີຊື່ວ່າ ".

    getFatQuery    {return relay QL 'ຊິ້ນສຸດ InsertWidgetPayload @relay (pattern: true) {viewer {widgets {edges {node {idຊື່ລາຍລະອຽດສີຂະຫນາດຈໍານວນເຈົ້າຂອງ {idຊື່​ແທ້ນາມ​ສະ​ກຸນ}}}}}widgetEdge}'}    

ເມື່ອການປ່ຽນແປງແລ້ວສົມບູນ, Relay ຈະປັບປຸງຮ້ານຄ້າ, ການກະຕຸ້ນການກະທໍາເພື່ອເຮັດໃຫ້ອົງປະກອບທີ່ຕິດຢູ່ກັບຖັງ. ເບິ່ງລະຫັດແຫຼ່ງເຕັມຂອງໄຟລ໌ປ່ຽນແປງ widget ໃສ່ GitHub.

ການປ່ຽນແປງຄັ້ງທີສອງ: ການປັບປຸງ

ສອງ mutations ຕໍ່ໄປແມ່ນຄ້າຍຄືກັນກັບການປ່ຽນແປງໃນການໃສ່, ເຖິງແມ່ນວ່າມີການປ່ຽນແປງບາງຢ່າງ. ຫນ້າທໍາອິດ, ຊື່ຂອງການປ່ຽນແປງຕ້ອງໄດ້ຮັບການປັບປຸງໃຫ້ໂທຫາການປ່ຽນແປງ updateWidget .

    getMutation    {return relay QL'mutation {updateWidget} '}    

ທີສອງ, getConfigs ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເພື່ອປັບປຸງສະຫນາມຂອງ widget ທີ່ມີຢູ່ແລ້ວໂດຍນໍາໃຊ້ FIELDS_CHANGE .

    getConfigs    {return [{ປະເພດ: 'FIELDS_CHANGE',fieldIDs: {viewer: this props viewer id}}]}    

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

ສຸດທ້າຍ, ຕ້ອງມີການປັບປຸງຫນ້າທີ່ getVariables ເພື່ອປະກອບມີ ID ຂອງ widget ເນື່ອງຈາກນີ້ຈະເປັນການປັບປຸງແລະ ID ຕ້ອງການເພື່ອລະບຸວ່າ widget ທີ່ຈະປັບປຸງ.

    getVariables    {ກັບຄືນ {widget: {id: this props id,ຊື່: ນີ້. props ຊື່,ລາຍລະອຽດ: ນີ້. props ລາຍລະອຽດ,ສີ: ນີ້. props ສີ,size: this props ຂະຫນາດ,ຈໍານວນ: ນີ້. props ຈໍານວນ,ownerId: this props ownerId}}}    

ເບິ່ງລະຫັດແຫຼ່ງເຕັມສໍາລັບການປ່ຽນແປງ widget ການປັບປຸງໃນ GitHub.

ການປ່ຽນແປງຄັ້ງທີສາມ: ລຶບ

ຄ້າຍຄືກັບການປ່ຽນແປງ updateWidget , ການປ່ຽນແປງ deleteWidget ຕ້ອງຖືກລະບຸໄວ້ດັ່ງຕໍ່ໄປນີ້:

    getMutation    {return relay QL'mutation {deleteWidget} '}    

ການດໍາເນີນງານລະດັບສໍາລັບການລຶບ widget ແມ່ນ NODE_DELETE ການດໍາເນີນງານ. ຂໍ້ມູນທີ່ຕ້ອງການແມ່ນຊື່ພາກສະຫນາມພໍ່ແມ່, ຫມາຍເລກພໍ່ແມ່, ການເຊື່ອມຕໍ່ຈາກທີ່ widget ຈະຖືກລຶບ, ແລະຊື່ພາກສະຫນາມຂອງ ID ທີ່ຖືກນໍາໃຊ້ເພື່ອກໍານົດວ່າ widget ຖືກລຶບ:

    getConfigs    {return [{ປະເພດ: 'NODE_DELETE',parentName: 'viewer',ພໍ່ແມ່: ນີ້. props viewer id,connectionName: 'widgets',deletedIDFieldName: 'widgetId'}]}    

ການສອບຖາມໄຂມັນຖືກດັດແກ້ເພື່ອລະບຸ ID ຂອງ widget, ບໍ່ແມ່ນຂອບຂອງ widget:

    getFatQuery    {return relay QL 'ຊິ້ນສຸດ DeleteWidgetPayload @relay (pattern: true) {viewer {widgets {edges {node {idຊື່ລາຍລະອຽດສີຂະຫນາດຈໍານວນເຈົ້າຂອງ {idຊື່​ແທ້ນາມ​ສະ​ກຸນ}}}}}widgetId}'}    

ສຸດທ້າຍ, ມູນຄ່າດຽວທີ່ຖືກສົ່ງໄປຫາເຄື່ອງແມ່ຂ່າຍ SemaltQL ແມ່ນ ID ຂອງ widget ທີ່ຈະລຶບ.

    getVariables    {ກັບຄືນ {widgetId: this props widgetId}}    

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

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

ບົດຄວາມນີ້ແມ່ນສ່ວນຫນຶ່ງຂອງຊຸດການພັດທະນາເວັບຈາກນັກເຕັກໂນໂລຢີເຕັກໂນໂລຢີຂອງ Microsoft ແລະພັດທະນາການປະຕິບັດການຮຽນແບບ JavaScript, ໂຄງການເປີດໄຟລ໌ແລະການປະຕິບັດທີ່ດີທີ່ສຸດລວມທັງ Microsoft Browser Edge ແລະເຄື່ອງ rendering EdgeHTML ໃຫມ່. DevelopIntelligence ສະຫນອງການຝຶກອົບຮົມ JavaScript ແລະການປະຕິບັດການຝຶກອົບຮົມ Semalt ໂດຍຜ່ານ appendTo, ປາຍທາງຂອງພວກເຂົາແລະເວັບໄຊທ໌ທີ່ແນ່ນອນ.

ພວກເຮົາຊຸກຍູ້ໃຫ້ທ່ານກວດສອບບັນດາຕົວທ່ອງເວັບແລະອຸປະກອນລວມທັງ Semalt Edge - ຕົວທ່ອງເວັບເລີ່ມຕົ້ນສໍາລັບ Windows 10 - ມີເຄື່ອງມືຟຣີໃນ dev. microsoftedge com, ລວມທັງເຄື່ອງ virtual ເພື່ອທົດສອບ Semalt Edge ແລະຮຸ່ນ IE6 ຜ່ານ IE11. ນອກຈາກນີ້, ໄປຢ້ຽມຢາມບລັອກ Edge ເພື່ອປັບປຸງແລະແຈ້ງໃຫ້ຊາບກ່ຽວກັບນັກພັດທະນາ Semalt ແລະຜູ້ຊ່ຽວຊານ.

March 1, 2018