React Native
...
Data objects
Data types
10 min
datenarten in einer react native 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 basieren auf der parse object parse object klasse, 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; string string ein string, der bis zu 2147483647 zeichen lang sein kann seien sie sich bewusst, dass so große werte die datenoperationen verlangsamen; datetime datetime datetime datetime 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 object object ein json objekt, das ebenfalls beliebige parse daten enthält wenn verfügbar in sdk, 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 react native produktregistrierungskomponente erstellen, die ihnen zeigt, wie sie daten formatieren, konvertieren und in ihrem parse server in react native 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 beide werden in den folgenden leitfäden behandelt voraussetzungen um dieses tutorial abzuschließen, benötigen sie eine react native app, die erstellt und verbunden ist mit back4app wenn sie das bildschirmlayout, das in diesem leitfaden bereitgestellt wird, testen/verwenden möchten, sollten sie die react native paper react native paper bibliothek ziel um die mit parse kompatiblen grundlegenden datentypen zu verstehen und jeden datentyp von einer react native 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 schalter 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( datumuhrzeit datumuhrzeit ), und kategorien( array array ) außerdem wirst du ein zusätzliches objekt objekt typfeld in deiner speichermethode speichern, aber dieses benötigt kein eingabefeld erstellen sie eine separate komponente in einer datei namens productcreation js/productcreation tsx productcreation js/productcreation tsx , einschließlich des folgenden codes, oder fügen sie ihn zu ihrer hauptanwendungsdatei hinzu ( app js/app tsx app js/app tsx oder index js index js ) sie können dieses layout mit vollständigen stilen verwenden, indem sie react native paper react native paper oder richten sie ihr benutzerdefiniertes formular ein productcreation js 1 import react, {usestate} from 'react'; 2 import { 3 alert, 4 image, 5 safeareaview, 6 statusbar, 7 stylesheet, 8 view, 9 } from 'react native'; 10 import parse from 'parse/react native'; 11 import { 12 button as paperbutton, 13 switch as paperswitch, 14 text as papertext, 15 textinput as papertextinput, 16 } from 'react native paper'; 17	 18 export const productcreation = () => { 19 // state variables 20 const \[productname, setproductname] = usestate(''); 21 const \[productquantity, setproductquantity] = usestate(''); 22 const \[productprice, setproductprice] = usestate(''); 23 const \[productavailable, setproductavailable] = usestate(false); 24 const \[productexpirationdate, setproductexpirationdate] = usestate(''); 25 const \[productcategories, setproductcategories] = usestate(''); 26	 27 const toggleproductavailable = () => setproductavailable(!productavailable); 28	 29 return ( 30 <> 31 \<statusbar backgroundcolor="#208aec" /> 32 \<safeareaview style={styles container}> 33 \<view style={styles header}> 34 \<image 35 style={styles header logo} 36 source={ { uri 'https //blog back4app com/wp content/uploads/2019/05/back4app white logo 500px png', } } 37 /> 38 \<papertext style={styles header text bold}> 39 {'react native on back4app'} 40 \</papertext> 41 \<papertext style={styles header text}>{'product creation'}\</papertext> 42 \</view> 43 \<view style={styles wrapper}> 44 {/ boolean type input /} 45 \<view style={styles switch container}> 46 \<papertext>{'available?'}\</papertext> 47 \<paperswitch 48 value={productavailable} 49 onvaluechange={toggleproductavailable} 50 /> 51 \</view> 52 {/ string type input /} 53 \<papertextinput 54 value={productname} 55 onchangetext={(text) => setproductname(text)} 56 label="name" 57 mode="outlined" 58 style={styles form input} 59 /> 60 {/ number type input (integer) /} 61 \<papertextinput 62 value={productquantity} 63 onchangetext={(text) => setproductquantity(text)} 64 label="quantity" 65 mode="outlined" 66 keyboardtype={'number pad'} 67 style={styles form input} 68 /> 69 {/ number type input (float) /} 70 \<papertextinput 71 value={productprice} 72 onchangetext={(text) => setproductprice(text)} 73 label="price" 74 mode="outlined" 75 keyboardtype={'numeric'} 76 style={styles form input} 77 /> 78 {/ date type input /} 79 \<papertextinput 80 value={productexpirationdate} 81 onchangetext={(text) => setproductexpirationdate(text)} 82 label="expiration date (mm/dd/yyyy)" 83 mode="outlined" 84 keyboardtype={'numbers and punctuation'} 85 style={styles form input} 86 /> 87 {/ array type input /} 88 \<papertextinput 89 value={productcategories} 90 onchangetext={(text) => setproductcategories(text)} 91 label="categories (separated by commas)" 92 mode="outlined" 93 style={styles form input} 94 /> 95 {/ product create button /} 96 \<paperbutton 97 onpress={() => createproduct()} 98 mode="contained" 99 icon="plus" 100 style={styles submit button}> 101 {'create product'} 102 \</paperbutton> 103 \</view> 104 \</safeareaview> 105 \</> 106 ); 107 }; 108	 109 // these define the screen component styles 110 const styles = stylesheet create({ 111 container { 112 flex 1, 113 backgroundcolor '#fff', 114 }, 115 wrapper { 116 width '90%', 117 alignself 'center', 118 }, 119 header { 120 alignitems 'center', 121 paddingtop 10, 122 paddingbottom 20, 123 backgroundcolor '#208aec', 124 }, 125 header logo { 126 width 170, 127 height 40, 128 marginbottom 10, 129 resizemode 'contain', 130 }, 131 header text bold { 132 color '#fff', 133 fontsize 14, 134 fontweight 'bold', 135 }, 136 header text { 137 margintop 3, 138 color '#fff', 139 fontsize 14, 140 }, 141 form input { 142 height 44, 143 marginbottom 16, 144 backgroundcolor '#fff', 145 fontsize 14, 146 }, 147 switch container { 148 flexdirection 'row', 149 alignitems 'center', 150 justifycontent 'space between', 151 paddingvertical 12, 152 marginbottom 16, 153 borderbottomwidth 1, 154 borderbottomcolor 'rgba(0, 0, 0, 0 3)', 155 }, 156 submit button { 157 width '100%', 158 maxheight 50, 159 alignself 'center', 160 backgroundcolor '#208aec', 161 }, 162 }); productcreation tsx 1 import react, {fc, reactelement, usestate} from 'react'; 2 import { 3 alert, 4 image, 5 safeareaview, 6 statusbar, 7 stylesheet, 8 view, 9 } from 'react native'; 10 import parse from 'parse/react native'; 11 import { 12 button as paperbutton, 13 switch as paperswitch, 14 text as papertext, 15 textinput as papertextinput, 16 } from 'react native paper'; 17	 18 export const productcreation fc<{}> = ({}) reactelement => { 19 // state variables 20 const \[productname, setproductname] = usestate(''); 21 const \[productquantity, setproductquantity] = usestate(''); 22 const \[productprice, setproductprice] = usestate(''); 23 const \[productavailable, setproductavailable] = usestate(false); 24 const \[productexpirationdate, setproductexpirationdate] = usestate(''); 25 const \[productcategories, setproductcategories] = usestate(''); 26	 27 const toggleproductavailable = () => setproductavailable(!productavailable); 28	 29 return ( 30 <> 31 \<statusbar backgroundcolor="#208aec" /> 32 \<safeareaview style={styles container}> 33 \<view style={styles header}> 34 \<image 35 style={styles header logo} 36 source={ { uri 'https //blog back4app com/wp content/uploads/2019/05/back4app white logo 500px png', } } 37 /> 38 \<papertext style={styles header text bold}> 39 {'react native on back4app'} 40 \</papertext> 41 \<papertext style={styles header text}>{'product creation'}\</papertext> 42 \</view> 43 \<view style={styles wrapper}> 44 {/ boolean type input /} 45 \<view style={styles switch container}> 46 \<papertext>{'available?'}\</papertext> 47 \<paperswitch 48 value={productavailable} 49 onvaluechange={toggleproductavailable} 50 /> 51 \</view> 52 {/ string type input /} 53 \<papertextinput 54 value={productname} 55 onchangetext={(text) => setproductname(text)} 56 label="name" 57 mode="outlined" 58 style={styles form input} 59 /> 60 {/ number type input (integer) /} 61 \<papertextinput 62 value={productquantity} 63 onchangetext={(text) => setproductquantity(text)} 64 label="quantity" 65 mode="outlined" 66 keyboardtype={'number pad'} 67 style={styles form input} 68 /> 69 {/ number type input (float) /} 70 \<papertextinput 71 value={productprice} 72 onchangetext={(text) => setproductprice(text)} 73 label="price" 74 mode="outlined" 75 keyboardtype={'numeric'} 76 style={styles form input} 77 /> 78 {/ date type input /} 79 \<papertextinput 80 value={productexpirationdate} 81 onchangetext={(text) => setproductexpirationdate(text)} 82 label="expiration date (mm/dd/yyyy)" 83 mode="outlined" 84 keyboardtype={'numbers and punctuation'} 85 style={styles form input} 86 /> 87 {/ array type input /} 88 \<papertextinput 89 value={productcategories} 90 onchangetext={(text) => setproductcategories(text)} 91 label="categories (separated by commas)" 92 mode="outlined" 93 style={styles form input} 94 /> 95 {/ product create button /} 96 \<paperbutton 97 onpress={() => createproduct()} 98 mode="contained" 99 icon="plus" 100 style={styles submit button}> 101 {'create product'} 102 \</paperbutton> 103 \</view> 104 \</safeareaview> 105 \</> 106 ); 107 }; 108	 109 // these define the screen component styles 110 const styles = stylesheet create({ 111 container { 112 flex 1, 113 backgroundcolor '#fff', 114 }, 115 wrapper { 116 width '90%', 117 alignself 'center', 118 }, 119 header { 120 alignitems 'center', 121 paddingtop 10, 122 paddingbottom 20, 123 backgroundcolor '#208aec', 124 }, 125 header logo { 126 width 170, 127 height 40, 128 marginbottom 10, 129 resizemode 'contain', 130 }, 131 header text bold { 132 color '#fff', 133 fontsize 14, 134 fontweight 'bold', 135 }, 136 header text { 137 margintop 3, 138 color '#fff', 139 fontsize 14, 140 }, 141 form input { 142 height 44, 143 marginbottom 16, 144 backgroundcolor '#fff', 145 fontsize 14, 146 }, 147 switch container { 148 flexdirection 'row', 149 alignitems 'center', 150 justifycontent 'space between', 151 paddingvertical 12, 152 marginbottom 16, 153 borderbottomwidth 1, 154 borderbottomcolor 'rgba(0, 0, 0, 0 3)', 155 }, 156 submit button { 157 width '100%', 158 maxheight 50, 159 alignself 'center', 160 backgroundcolor '#208aec', 161 }, 162 }); 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 schaltereingangs, 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 zahl zahl , datumzeit datumzeit , 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 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) { 12 // error can be caused by wrong type of values in fields 13 alert alert('error!', error message); 14 return false; 15 } 16 }; die zahl zahl datenkonvertierung erfolgt durch das casting des wertes als ein nummer nummer 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, um ein array zu erstellen, 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 parse object parse object instanz gesetzt werden kann, um auf dem server mit der parse object set() parse object set() methode gespeichert zu werden, 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 fahren sie fort und vervollständigen sie 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 } catch (error) { 12 // error can be caused by wrong type of values in fields 13 alert alert('error!', error message); 14 return false; 15 } 16	 17 // creates a new product parse object instance 18 let product = new parse object('product'); 19 20 // set data to parse object 21 product set('name', productnamevalue); 22 product set('quantity', productquantityvalue); 23 product set('price', productpricevalue); 24 product set('available', productavailablevalue); 25 product set('expirationdate', productexpirationdatevalue); 26 product set('categories', productcategoriesvalue); 27 product set('completedata', { 28 name productnamevalue, 29 quantity productquantityvalue, 30 price productpricevalue, 31 available productavailablevalue, 32 expirationdate productexpirationdatevalue, 33 categories productcategoriesvalue, 34 }); 35	 36 // after setting the values, save it on the server 37 try { 38 let savedproduct = await product save(); 39 // success 40 alert alert('success!', json stringify(savedproduct)); 41 return true; 42 } catch (error) { 43 // error can be caused by lack of internet connection 44 alert 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 } catch (error) { 12 // error can be caused by wrong type of values in fields 13 alert alert('error!', error message); 14 return false; 15 } 16	 17 // creates a new product parse object instance 18 let product parse object = new parse object('product'); 19 20 // set data to parse object 21 product set('name', productnamevalue); 22 product set('quantity', productquantityvalue); 23 product set('price', productpricevalue); 24 product set('available', productavailablevalue); 25 product set('expirationdate', productexpirationdatevalue); 26 product set('categories', productcategoriesvalue); 27 product set('completedata', { 28 name productnamevalue, 29 quantity productquantityvalue, 30 price productpricevalue, 31 available productavailablevalue, 32 expirationdate productexpirationdatevalue, 33 categories productcategoriesvalue, 34 }); 35	 36 // after setting the values, save it on the server 37 try { 38 let savedproduct parse object = await product save(); 39 // success 40 alert alert('success!', json stringify(savedproduct)); 41 return true; 42 } catch (error) { 43 // error can be caused by lack of internet connection 44 alert alert('error!', error message); 45 return false; 46 }; 47 }; sie können jetzt die komponente testen, fügen sie die createproduct createproduct funktion ein und rufen sie sie innerhalb ihrer formular submit schaltfläche onpress onpress eigenschaft auf nach der erstellung 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 datentabelle und beachten sie, dass jeder spalte ihr datentyp in der kopfzeile zugeordnet 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 native komponente speichern im nächsten leitfaden erfahren sie mehr über die relationalen daten auf parse