Hari 23: Dasar React Native

Search for a command to run...

No comments yet. Be the first to comment.
Belajar full stack JavaScript selama ramadhan tahun 2021 - Javascript Dasar - Javascript Backend - Javascript Frontend - Javascript Mobile https://youtu.be/gf_Fssu623U
Ada banyak sekali UI untuk react native yang bisa dipakai secara gratis, pada series ini kita akan menggunakan nativebase, yang dapat dilihat disitus resminya https://nativebase.io Menggunakan nativebase Sebelum menggunakan komponen nativebase, pert...
Waktu dapet kerjaan pertama sebagai front-end dev di dusdusaan.com (2019), aku dikasih project pake React, seingat gue aplikasinya tentang reseller dimana fitur yg saya kerjakan adalah tentang point dan event para reseller. Jujur aja, waktu itu aku b...

Awal mula gue pake TypeScript itu sebenernya bukan karena inisiatif sendiri, tapi karena kepepet. Waktu itu kantor lagi ngembangin dashboard chatbot buat tim CS, dan project-nya udah jalan duluan pake TypeScript. Gue yang baru masuk tim, langsung dis...

Javascript

Terkadang kita mendapatkan data bilangan misal response saat nge-hit API ke backend kita sendiri atau saat menggunakan third-party API anggap saja Xendit atau Midtrans tetapi berbentuk string. Seperti contoh dibawah ini. { "data": { "total_bela...

Cerita Mentor

Pada dasarnya react native sama dengan react js sama-sama dalam bentuk component, cara penulisan juga sama. Anda perlu tahu component, props, state, hooks untuk lanjut jika belum maka silahkan baca materi react pada minggu sebelumnya disini
Ini adalah tradisi yang turun temurun, saat pertamakali belajar hal baru dalam koding biasanya dengan menampilkan Hello World! jadi Hello Asrul Dev. Langsung saja mari tulis kode berikut pada file App.js.
import React from "react";
import { View, Text } from "react-native";
const App = () => {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<Text style={{ color: "blue", fontSize: 32 }}>Hello Asrul Dev</Text>
</View>
);
};
export default App;
Hasilnya akan terlihat seperti berikut.

Terlihat jelas pada kode diatas, jika pada web kita menggunakan
<div>maka pada react native kita menggunakan<View>, begitu juga penggunaan<p>, <h1>, ... atau <span>menjadi<Text>pada react native.
Desain yang bagus bisa menjadi daya tarik untuk menggunakan aplikasi, maka materi ini saya anggap penting. Style pada react native mirip dengan css pada web tapi dalam bentuk kode object javascript.
React native telah menyediakan StyleSheet yang dapat kita gunakan untuk kumpulan style kode yang dimiliki. Sebelumnya terlihat bahwa saya telah memperlihatkan style pada <View> dan <Text>, dengan menggunakan StyleSheet maka kode akan terlihat lebih rapi.
import React from "react";
import { View, Text, StyleSheet } from "react-native";
const App = () => {
return (
<View style={styles.AllCenter}>
<Text style={styles.textDemo}>Hello Asrul Dev</Text>
</View>
);
};
export default App;
const styles = StyleSheet.create({
AllCenter: {
flex: 1,
alignItems: "center",
justifyContent: "center",
},
textDemo: {
color: "blue",
fontSize: 32,
},
});
Pada react native, layout menggunakan konsep flex yang dapat dibaca disini
Jika pada html ada <input type="text" /> maka gantinya pada react native adalah <TextInput />. Perhatikan contoh berikut.
import React, { useState } from "react";
import { View, Text, StyleSheet, TextInput } from "react-native";
const App = () => {
const [teks, updateTeks] = useState("");
return (
<View style={styles.AllCenter}>
<Text style={styles.textDemo}>Hello Asrul Dev</Text>
<TextInput
style={styles.inputHope}
placeholder="Tulis apapun"
onChangeText={(text) => updateTeks(text)}
value={teks}
/>
</View>
);
};
export default App;
const styles = StyleSheet.create({
AllCenter: {
flex: 1,
padding: 10,
alignItems: "center",
justifyContent: "center",
},
textDemo: {
color: "blue",
fontSize: 32,
},
inputHope: {
height: 40,
borderColor: "gray",
borderWidth: 1,
width: "100%",
},
});
Hasilnya akan seperti berikut.

Intraksi pada mobile akan sering berhubungan dengan yang namanya sentuh untuk melakukan interaksi, biasanya untuk pindah halaman atau lainnya. Button merupakan salah satu bentuk interaksi tersebut. Button pada react native dapat dilihat pada contoh berikut.
import React, { useState } from "react";
import { View, Text, StyleSheet, TextInput, Button } from "react-native";
const App = () => {
const [teks, updateTeks] = useState("");
return (
<View style={styles.AllCenter}>
<Text style={styles.textDemo}>Hello Asrul Dev</Text>
<TextInput
style={styles.inputHope}
placeholder="Tulis apapun"
onChangeText={(text) => updateTeks(text)}
value={teks}
/>
<View style={styles.fullButton}>
<Button onPress={() => alert(teks)} title="Sentuh Aku" />
</View>
</View>
);
};
export default App;
const styles = StyleSheet.create({
AllCenter: {
flex: 1,
padding: 10,
alignItems: "center",
justifyContent: "center",
},
textDemo: {
color: "blue",
fontSize: 32,
},
inputHope: {
height: 40,
borderColor: "gray",
borderWidth: 1,
width: "100%",
},
fullButton: {
height: 40,
width: "100%",
marginTop: 8,
},
});
Hasilnya akan seperti berikut.

Aplikasi mobile memiliki ruang yang sempit, sehingga scroll akan sangat membantu untuk tampilan yang panjang. Berikut penggunaan ScrollView pada react native.
import React, { useState } from "react";
import {
View,
Text,
StyleSheet,
TextInput,
Button,
ScrollView,
Image,
} from "react-native";
const App = () => {
const [teks, updateTeks] = useState("");
return (
<ScrollView>
<View style={styles.AllCenter}>
<Text style={styles.textDemo}>Hello Asrul Dev</Text>
<TextInput
style={styles.inputHope}
placeholder="Tulis apapun"
onChangeText={(text) => updateTeks(text)}
value={teks}
/>
<View style={styles.fullButton}>
<Button onPress={() => alert(teks)} title="Sentuh Aku" />
</View>
</View>
<View style={styles.AllCenter}>
<Image
source={{
uri: "https://avatars2.githubusercontent.com/u/15111402?s=460&v=4",
width: 200,
height: 200,
}}
style={{ marginTop: 8 }}
/>
<Image
source={{
uri: "https://avatars2.githubusercontent.com/u/38931702?s=460&v=4",
width: 200,
height: 200,
}}
style={{ marginTop: 8 }}
/>
<Image
source={{
uri: "https://avatars0.githubusercontent.com/u/51555828?s=460&v=4",
width: 200,
height: 200,
}}
style={{ marginTop: 8 }}
/>
<Image
source={{
uri: "https://avatars1.githubusercontent.com/u/44023987?s=460&v=4",
width: 200,
height: 200,
}}
style={{ marginTop: 8 }}
/>
</View>
</ScrollView>
);
};
export default App;
const styles = StyleSheet.create({
AllCenter: {
flex: 1,
padding: 10,
alignItems: "center",
justifyContent: "center",
},
textDemo: {
color: "blue",
fontSize: 32,
},
inputHope: {
height: 40,
borderColor: "gray",
borderWidth: 1,
width: "100%",
},
fullButton: {
height: 40,
width: "100%",
marginTop: 8,
},
});
Hasilnya akan seperti berikut.
