cari

Rumah  >  Soal Jawab  >  teks badan

Cara menghantar data ke belakang dalam React Native

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);
      })
    
  }
}

P粉878542459P粉878542459273 hari yang lalu392

membalas semua(1)saya akan balas

  • P粉770375450

    P粉7703754502024-03-30 08:00:07

    Selepas saya cuba melaksanakannya dalam scanner.js ia ok

    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 )
         
       
      };
      Register = () => {
        this.state={
            userid:''
        };
        let userid = this.state.userid;
        
    
        
          let InsertAPIURL = "https://127.0.0.1/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("Eror"+error);
          })
        
      }
    
     
      // Check permissions and return the screens
      if (hasPermission === null) {
        return (
          
            Requesting for camera permission
          )
      }
      if (hasPermission === false) {
        return (
          
            No access to camera
            

    Masukkan .php

     $Message);
        echo json_encode($Response);
    ?>

    Selepas saya mengimbas kod bar dan klik butang "OK" ia menunjukkan ralat Ralat jenis: Permintaan rangkaian gagal

    balas
    0
  • Batalbalas