Saya cuba membangunkan aplikasi pengimbas kod bar untuk IOS, kini saya telah berjaya mencipta pengimbas yang boleh membaca data dari kod bar, tetapi bukan hanya membaca data, saya juga mahu menyimpan data ke dalam pangkalan data, saya mempunyai Selepas meneroka beberapa kod sumber di sisi lain ialah kod saya.
scanner.js
Berikut ialah sumber pengimbas yang sudah boleh membaca data daripada kod bar
import React, { useState, useEffect,Component,onMount} from 'react'; import { Text,TextInput, View, StyleSheet, Button } from 'react-native'; import { BarCodeScanner } from 'expo-barcode-scanner'; import {useNavigation} from'@react-navigation/native'; import {StatusBar} from 'expo-status-bar'; export default function Scanner () { const [hasPermission, setHasPermission] = useState(null); const [scanned, setScanned] = useState(false); const [userid, setText] = useState('Not yet scanned') const [currentDate, setCurrentDate] = useState(''); const navigation = useNavigation(); const askForCameraPermission = () => { (async () => { const { status } = await BarCodeScanner.requestPermissionsAsync(); setHasPermission(status === 'granted'); })() } // Request Camera Permission useEffect(() => { askForCameraPermission(); }, []); useEffect(() => { var date = new Date().getDate(); //Current Date var month = new Date().getMonth() + 1; //Current Month var year = new Date().getFullYear(); //Current Year var hours = new Date().getHours(); //Current Hours var min = new Date().getMinutes(); //Current Minutes var sec = new Date().getSeconds(); //Current Seconds setCurrentDate( date + '/' + month + '/' + year + ' ' + hours + ':' + min + ':' + sec ); }, []); // What happens when we scan the bar code const handleBarCodeScanned = ({ type, data }) => { setScanned(true); setText(data ) }; // Check permissions and return the screens if (hasPermission === null) { return ( <View style={styles.container}> <Text>Requesting for camera permission</Text> </View>) } if (hasPermission === false) { return ( <View style={styles.container}> <Text style={{ margin: 10 }}>No access to camera</Text> <Button title={'Allow Camera'} onPress={() => askForCameraPermission()} /> </View>) } // Return the View return ( <View style={styles.container}> <View style={styles.barcodebox}> <BarCodeScanner onBarCodeScanned={scanned ? undefined : handleBarCodeScanned} style={{ height: 400, width: 400 }} /> </View> <Text style={styles.maintext}>{userid + '\n'+currentDate} </Text> { scanned && <Button title={'Scan again?'} onPress={() => setScanned(false)} color='tomato' /> } { scanned && <Button title={'OK'} onPress={()=> navigation.navigate('Home',{userid})} /> } </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#fff', alignItems: 'center', justifyContent: 'center', }, maintext: { fontSize: 16, margin: 20, }, barcodebox: { alignItems: 'center', justifyContent: 'center', height: 300, width: 300, overflow: 'hidden', borderRadius: 30, backgroundColor: 'tomato' } });
Selepas saya meneroka cara untuk menghantar data ke bahagian belakang, ia memerlukan kod jenis ini, tetapi bagaimanakah saya boleh melaksanakan kod ini ke dalam scanner.js saya? Harap semua dapat membantu, terima kasih
export default class Scanner extends Component { constructor(props) { super(props); this.state = {userid: ''}; } Register = () => { let userid = this.state.userid; let InsertAPIURL = "http://localhost/api/insert.php"; let headers = { 'Accept': 'application/json', 'Content-Type': 'application/json' }; let Data = { userid: userid, }; fetch(InsertAPIURL, { method: 'POST', headers: headers, body: JSON.stringify(Data) }) .then((response) =>response.json()) .then((response)=>{ alert(response[0].Message); }) .catch((error) => { alert("Error"+error); }) } }
Selepas saya cuba melaksanakannya dalam scanner.js ia ok
Masukkan .php
Selepas saya mengimbas kod bar dan klik butang "OK" ia menunjukkan ralat Ralat jenis: Permintaan rangkaian gagal