ReactJS
Data objects
Parse Datentypen in React: Entwickler-Leitfaden
9 min
datenarten in einer react komponente analysieren einführung im herzen der parse core funktion steht das management von datenobjekten parse ermöglicht es ihnen, ihre daten einfach über seine sdks oder apis (rest oder graphql) zu speichern und abzufragen alle funktionen der datenobjekte werden unter verwendung der parse object parse object klasse erstellt, deren felder schlüssel wert paare mehrerer json kompatibler datentypen enthalten können die primären datentypen, die den objektfeldern zugewiesen werden können, sind die folgenden zahl zahl ganze zahlen (42) oder fließkommazahlen (42 5), solange ‘ ’ der dezimaltrennzeichen ist; boolean boolean true oder false werte; zeichenkette zeichenkette eine zeichenkette, die bis zu 2147483647 zeichen lang sein kann seien sie sich bewusst, dass so große werte die datenoperationen verlangsamen; datum/uhrzeit datum/uhrzeit datum/uhrzeit datum/uhrzeit objekte, die standardmäßig im utc format gespeichert werden wenn sie eine andere zeitzone verwenden müssen, sollte die umwandlung manuell erfolgen; array array ein array, das daten in einem beliebigen parse kompatiblen format enthält objekt ein json objekt, das ebenfalls beliebige parse daten enthält wenn es im sdk verfügbar ist, wird ein include() include() aufruf details aus der objekt eigenschaft bringen wenn sie sich entscheiden, den array typ zu verwenden, empfehlen wir, die array objekte klein zu halten, da dies die gesamtleistung ihrer datenoperationen beeinträchtigen kann unsere empfehlung ist, den array typ zu verwenden, wenn er 20 elemente nicht überschreitet und im laufe der zeit nicht wächst anstelle des array typs können sie die typen pointer und relations als alternative verwenden in diesem leitfaden lernen sie, wie sie daten in jedem der oben aufgeführten grundlegenden datentypen speichern sie werden eine produktregistrierungskomponente in react erstellen, die ihnen zeigt, wie sie daten formatieren, konvertieren und in ihrem parse server in react speichern parse bietet auch die datentypen geopoint geopoint an, um die leistungsfähigkeit von geolokalisierungsressourcen zu nutzen, sowie die parse spezifischen relationalen daten mit den typen pointer pointer oder relation relation sie werden beide in den folgenden leitfäden behandelt sehen voraussetzungen um dieses tutorial abzuschließen, benötigen sie eine react app, die erstellt und mit back4app verbunden wenn sie das bildschirmlayout, das in diesem leitfaden bereitgestellt wird, testen/verwenden möchten, sollten sie die ant design ant design bibliothek ziel um die mit parse kompatiblen grundlegenden datentypen zu verstehen und jeden datentyp von einer react komponente auf parse zu speichern 1 die produkt erstellungs komponente lass uns zuerst die komponentenstruktur erstellen lass es uns einfach halten und einen formularbildschirm mit einem texteingabefeld für jeden datentyp, einem kontrollkästchen und einem absende button zum speichern des objekts erstellen diese eingaben werden deine produkt produkt feldwerte sammeln name ( string string ), menge ( zahl zahl ), preis ( zahl zahl ), verfügbar ( boolean boolean ), ablaufdatum ( datum/uhrzeit datum/uhrzeit ), und kategorien( array array ) außerdem wirst du ein zusätzliches objekt objekt typfeld in deiner speichermethode speichern, aber dieses benötigt kein eingabefeld erstelle eine separate komponente in einer datei namens productcreation js/productcreation tsx productcreation js/productcreation tsx einschließlich des folgenden codes, oder füge es zu deiner hauptanwendungsdatei hinzu ( app js/app tsx app js/app tsx ) du kannst dieses layout mit vollständigen stilen unter verwendung von ant design ant design verwenden und den css code in deine app css app css datei einfügen oder dein eigenes benutzerdefiniertes formular einrichten productcreation js 1 import react, { usestate } from 'react'; 2 import parse from 'parse/dist/parse min js'; 3 import ' /app css'; 4 import { button, checkbox, input } from 'antd'; 5 import { plusoutlined } from '@ant design/icons'; 6 7 export const productcreation = () => { 8 // state variables 9 const \[productname, setproductname] = usestate(''); 10 const \[productquantity, setproductquantity] = usestate(''); 11 const \[productprice, setproductprice] = usestate(''); 12 const \[productavailable, setproductavailable] = usestate(false); 13 const \[productexpirationdate, setproductexpirationdate] = usestate(''); 14 const \[productcategories, setproductcategories] = usestate(''); 15 16 return ( 17 \<div> 18 \<div classname="header"> 19 \<img 20 classname="header logo" 21 alt="back4app logo" 22 src={ 23 'https //blog back4app com/wp content/uploads/2019/05/back4app white logo 500px png' 24 } 25 /> 26 \<p classname="header text bold">{'react on back4app'}\</p> 27 \<p classname="header text">{'product creation'}\</p> 28 \</div> 29 \<div classname="container"> 30 {/ product field inputs /} 31 \<div classname="flex between"> 32 \<h2 classname="list heading">available?\</h2> 33 \<checkbox 34 onchange={(e) => setproductavailable(e target checked)} 35 >\</checkbox> 36 \</div> 37 \<div classname="form wrapper"> 38 \<input 39 classname="form input" 40 value={productname} 41 onchange={(event) => setproductname(event target value)} 42 placeholder="name" 43 size="large" 44 /> 45 \<input 46 classname="form input" 47 value={productquantity} 48 onchange={(event) => setproductquantity(event target value)} 49 placeholder="quantity" 50 size="large" 51 /> 52 \<input 53 classname="form input" 54 value={productprice} 55 onchange={(event) => setproductprice(event target value)} 56 placeholder="price" 57 size="large" 58 /> 59 \<input 60 classname="form input" 61 value={productexpirationdate} 62 onchange={(event) => setproductexpirationdate(event target value)} 63 placeholder="expiration date (mm/dd/yyyy)" 64 size="large" 65 /> 66 \<input 67 classname="form input" 68 value={productcategories} 69 onchange={(event) => setproductcategories(event target value)} 70 placeholder="categories (separated by comma)" 71 size="large" 72 /> 73 {/ add product button /} 74 \<button 75 type="primary" 76 classname="form button" 77 color={'#208aec'} 78 size={'large'} 79 onclick={createproduct} 80 icon={\<plusoutlined />} 81 > 82 create product 83 \</button> 84 \</div> 85 \</div> 86 \</div> 87 ); 88 }; productcreation tsx 1 import react, { usestate, fc, reactelement } from 'react'; 2 import ' /app css'; 3 import { button, checkbox, input } from 'antd'; 4 import { plusoutlined } from '@ant design/icons'; 5 const parse = require('parse/dist/parse min js'); 6 7 export const productcreation fc<{}> = () reactelement => { 8 // state variables 9 const \[productname, setproductname] = usestate(''); 10 const \[productquantity, setproductquantity] = usestate(''); 11 const \[productprice, setproductprice] = usestate(''); 12 const \[productavailable, setproductavailable] = usestate(false); 13 const \[productexpirationdate, setproductexpirationdate] = usestate(''); 14 const \[productcategories, setproductcategories] = usestate(''); 15 16 const createproduct = async function () promise\<boolean> { 17 try { 18 // these values come from state variables 19 // convert data values to corresponding data types 20 const productnamevalue string = productname; 21 const productquantityvalue number = number(productquantity); 22 const productpricevalue number = number(productprice); 23 const productavailablevalue boolean = productavailable; 24 const productexpirationdatevalue date = new date(productexpirationdate); 25 const productcategoriesvalue string\[] = productcategories split(','); 26 27 // creates a new product parse object instance 28 let product parse object = new parse object('product'); 29 30 // set data to parse object 31 product set('name', productnamevalue); 32 product set('quantity', productquantityvalue); 33 product set('price', productpricevalue); 34 product set('available', productavailablevalue); 35 product set('expirationdate', productexpirationdatevalue); 36 product set('categories', productcategoriesvalue); 37 product set('completedata', { 38 name productnamevalue, 39 quantity productquantityvalue, 40 price productpricevalue, 41 available productavailablevalue, 42 expirationdate productexpirationdatevalue, 43 categories productcategoriesvalue, 44 }); 45 46 // after setting the values, save it on the server 47 try { 48 let savedproduct parse object = await product save(); 49 // success 50 alert(`success! ${json stringify(savedproduct)}`); 51 return true; 52 } catch (error) { 53 // error can be caused by lack of internet connection 54 alert(`error! ${error message}`); 55 return false; 56 } 57 } catch (error any) { 58 // error can be caused by wrong type of values in fields 59 alert(`error! ${error message}`); 60 return false; 61 } 62 }; 63 64 return ( 65 \<div> 66 \<div classname="header"> 67 \<img 68 classname="header logo" 69 alt="back4app logo" 70 src={ 71 'https //blog back4app com/wp content/uploads/2019/05/back4app white logo 500px png' 72 } 73 /> 74 \<p classname="header text bold">{'react on back4app'}\</p> 75 \<p classname="header text">{'product creation'}\</p> 76 \</div> 77 \<div classname="container"> 78 {/ product field inputs /} 79 \<div classname="flex between"> 80 \<h2 classname="list heading">available?\</h2> 81 \<checkbox 82 onchange={(e) => setproductavailable(e target checked)} 83 >\</checkbox> 84 \</div> 85 \<div classname="form wrapper"> 86 \<input 87 classname="form input" 88 value={productname} 89 onchange={(event) => setproductname(event target value)} 90 placeholder="name" 91 size="large" 92 /> 93 \<input 94 classname="form input" 95 value={productquantity} 96 onchange={(event) => setproductquantity(event target value)} 97 placeholder="quantity" 98 size="large" 99 /> 100 \<input 101 classname="form input" 102 value={productprice} 103 onchange={(event) => setproductprice(event target value)} 104 placeholder="price" 105 size="large" 106 /> 107 \<input 108 classname="form input" 109 value={productexpirationdate} 110 onchange={(event) => setproductexpirationdate(event target value)} 111 placeholder="expiration date (mm/dd/yyyy)" 112 size="large" 113 /> 114 \<input 115 classname="form input" 116 value={productcategories} 117 onchange={(event) => setproductcategories(event target value)} 118 placeholder="categories (separated by comma)" 119 size="large" 120 /> 121 {/ add product button /} 122 \<button 123 type="primary" 124 classname="form button" 125 color={'#208aec'} 126 size={'large'} 127 onclick={createproduct} 128 icon={\<plusoutlined />} 129 > 130 create product 131 \</button> 132 \</div> 133 \</div> 134 \</div> 135 ); 136 }; 1 html { 2 box sizing border box; 3 outline none; 4 overflow auto; 5 } 6 7 , 8 before, 9 after { 10 margin 0; 11 padding 0; 12 box sizing inherit; 13 } 14 15 h1, 16 h2, 17 h3, 18 h4, 19 h5, 20 h6 { 21 margin 0; 22 } 23 24 p { 25 margin 0; 26 } 27 28 body { 29 margin 0; 30 background color #fff; 31 } 32 33 container { 34 width 100%; 35 max width 600px; 36 margin auto; 37 padding 20px 0; 38 } 39 40 header { 41 align items center; 42 padding 25px 0; 43 background color #208aec; 44 } 45 46 header logo { 47 height 55px; 48 margin bottom 20px; 49 object fit contain; 50 } 51 52 header text bold { 53 margin bottom 3px; 54 color rgba(255, 255, 255, 0 9); 55 font size 16px; 56 font weight bold; 57 } 58 59 header text { 60 color rgba(255, 255, 255, 0 9); 61 font size 15px; 62 } 63 64 flex between { 65 display flex; 66 align items center; 67 justify content space between; 68 } 69 70 list heading { 71 font weight bold; 72 } 73 74 form wrapper { 75 margin top 20px; 76 margin bottom 10px; 77 } 78 79 form input { 80 margin bottom 20px; 81 } 82 83 form button { 84 width 100%; 85 } nachdem sie diesen bildschirm eingerichtet haben, sollte ihre anwendung so aussehen beachten sie, dass jedes produkt produkt attribut sein eigenes texteingabefeld hat, mit ausnahme des booleschen kontrollkästcheneingangs, was bedeutet, dass die daten darin vor dem speichern in den entsprechenden datentyp konvertiert werden müssen 2 eingabedaten konvertieren bevor sie ihre daten in die parse object parse object , müssen sie die nummer nummer , datum und uhrzeit datum und uhrzeit , und array array eingaben korrekt formatieren lassen sie uns jetzt eine speicherfunktion erstellen, die daten aus ihren statusvariablen abruft und die geeignete datenkonvertierung anwendet productcreation js 1 const createproduct = async function () { 2 try { 3 // these values come from state variables 4 // convert data values to corresponding data types 5 const productnamevalue = productname; 6 const productquantityvalue = number(productquantity); 7 const productpricevalue = number(productprice); 8 const productavailablevalue = productavailable; 9 const productexpirationdatevalue = new date(productexpirationdate); 10 const productcategoriesvalue = productcategories split(','); 11 } catch (error) { 12 // error can be caused by wrong type of values in fields 13 alert(`error! ${error message}`); 14 return false; 15 } 16 }; productcreation tsx 1 const createproduct = async function () promise\<boolean> { 2 try { 3 // these values come from state variables 4 // convert data values to corresponding data types 5 const productnamevalue string = productname; 6 const productquantityvalue number = number(productquantity); 7 const productpricevalue number = number(productprice); 8 const productavailablevalue boolean = productavailable; 9 const productexpirationdatevalue date = new date(productexpirationdate); 10 const productcategoriesvalue string\[] = productcategories split(','); 11 } catch (error any) { 12 // error can be caused by wrong type of values in fields 13 alert(`error! ${error message}`); 14 return false; 15 } 16 }; die nummer nummer datenkonvertierung erfolgt durch das casting des wertes als ein zahl zahl javascript objekt datumuhrzeit datumuhrzeit wird unter verwendung des datum datum javascript objektkonstruktors konvertiert; das array array wird erstellt, indem die string split string split methode in javascript verwendet wird, wodurch ein array erstellt wird, das jeden eintrag des kategorienfeldes enthält, der durch kommas getrennt ist beachten sie, dass ihre daten jetzt in einem einzelnen objekt enthalten sind, das in einer neuen p arse object arse object instanz gespeichert werden kann, um sie mit der parse object set() parse object set() methode an den server zu senden, die zwei argumente benötigt den feldnamen und den wert, der gesetzt werden soll lassen sie uns auch ein neues feld namens completedata completedata , das ihr objekt objekt typfeld sein wird, und das gleiche datenobjekt zuweisen mach weiter und vervollständige die createproduct createproduct funktion mit dem folgendem productcreation js 1 const createproduct = async function () { 2 try { 3 // these values come from state variables 4 // convert data values to corresponding data types 5 const productnamevalue = productname; 6 const productquantityvalue = number(productquantity); 7 const productpricevalue = number(productprice); 8 const productavailablevalue = productavailable; 9 const productexpirationdatevalue = new date(productexpirationdate); 10 const productcategoriesvalue = productcategories split(','); 11 12 // creates a new product parse object instance 13 let product = new parse object('product'); 14 15 // set data to parse object 16 product set('name', productnamevalue); 17 product set('quantity', productquantityvalue); 18 product set('price', productpricevalue); 19 product set('available', productavailablevalue); 20 product set('expirationdate', productexpirationdatevalue); 21 product set('categories', productcategoriesvalue); 22 product set('completedata', { 23 name productnamevalue, 24 quantity productquantityvalue, 25 price productpricevalue, 26 available productavailablevalue, 27 expirationdate productexpirationdatevalue, 28 categories productcategoriesvalue, 29 }); 30 31 // after setting the values, save it on the server 32 try { 33 let savedproduct = await product save(); 34 // success 35 alert(`success! ${json stringify(savedproduct)}`); 36 return true; 37 } catch (error) { 38 // error can be caused by lack of internet connection 39 alert(`error! ${error message}`); 40 return false; 41 } 42 } catch (error) { 43 // error can be caused by wrong type of values in fields 44 alert(`error! ${error message}`); 45 return false; 46 } 47 }; productcreation tsx 1 const createproduct = async function () promise\<boolean> { 2 try { 3 // these values come from state variables 4 // convert data values to corresponding data types 5 const productnamevalue string = productname; 6 const productquantityvalue number = number(productquantity); 7 const productpricevalue number = number(productprice); 8 const productavailablevalue boolean = productavailable; 9 const productexpirationdatevalue date = new date(productexpirationdate); 10 const productcategoriesvalue string\[] = productcategories split(','); 11 12 // creates a new product parse object instance 13 let product parse object = new parse object('product'); 14 15 // set data to parse object 16 product set('name', productnamevalue); 17 product set('quantity', productquantityvalue); 18 product set('price', productpricevalue); 19 product set('available', productavailablevalue); 20 product set('expirationdate', productexpirationdatevalue); 21 product set('categories', productcategoriesvalue); 22 product set('completedata', { 23 name productnamevalue, 24 quantity productquantityvalue, 25 price productpricevalue, 26 available productavailablevalue, 27 expirationdate productexpirationdatevalue, 28 categories productcategoriesvalue, 29 }); 30 31 // after setting the values, save it on the server 32 try { 33 let savedproduct parse object = await product save(); 34 // success 35 alert(`success! ${json stringify(savedproduct)}`); 36 return true; 37 } catch (error any) { 38 // error can be caused by lack of internet connection 39 alert(`error! ${error message}`); 40 return false; 41 }; 42 } catch (error any) { 43 // error can be caused by wrong type of values in fields 44 alert(`error! ${error message}`); 45 return false; 46 } 47 }; sie können jetzt die komponente testen, indem sie die createproduct createproduct funktion darin einfügen und sie innerhalb der eigenschaft des formular submit buttons onclick onclick aufrufen nach dem erstellen eines produkts sollten sie eine warnung sehen, die seine daten wie folgt enthält um zu bestätigen, dass ihre daten auf dem server mit den richtigen datentypen gespeichert wurden, können sie ihr parse dashboard ansehen klicken sie auf die produkt produkt daten tabelle und beachten sie, dass jeder spalte ihr datentyp im kopf geschrieben ist ihre klasse sollte so aussehen fazit am ende dieses leitfadens haben sie gelernt, wie sie jeden der grundlegenden datentypen, die auf parse verfügbar sind, mit einer react komponente speichern im nächsten leitfaden erfahren sie mehr über die relationalen daten auf parse