iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0
佛心分享-SideProject30

用React Native打造找餐店APP系列 第 27

[Day 27] 功能開發-將購物車送出訂單

  • 分享至 

  • xImage
  •  
  • 撰寫按鈕事件
  • 以Alert彈窗方式詢問使用者
  • 撰寫發送API 以及 回調事件處理

1.TouchableOpacity按鈕元件:在UI中使用了 TouchableOpacity 按鈕元件,當使用者點擊按鈕時,會觸發
handleSubmitOrder 函數。

    <TouchableOpacity
      onPress={handleSubmitOrder}
      style={{
        flex: 0.4,
        borderRadius: 5,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: 'orange',
      }}>
      <Text
        style={{color: '#fff', fontWeight: 'bold', fontSize: 18}}>
        送單
      </Text>
    </TouchableOpacity>

2.按鈕事件處理 - handleSubmitOrder:當按下「送單」按鈕後,系統會彈出一個確認視窗。這個視窗使用Alert.alert來實現,並包含兩個選項:「取消」和「確定」。

Alert.alert(
      '確定提交訂單',
      '您確定提交訂單嗎?',
      [
        {
          text: '取消',
          style: 'cancel',
        },
        {
          text: '確定',
          onPress: () => {
            handleClickPostOrder();
          },
        },
      ],
      {cancelable: false},
    );

3.發送API請求:handleClickPostOrder 函數負責發送API請求以提交訂單。此函數建立一個包含訂單詳細資訊的data物件,然後使用axios.post()方法將這些資料發送到指定的API。

  const handleClickPostOrder = () => {
    let data = {
      id: Math.random().toString(36).substr(2, 9),
      M_Name: '測試',
      M_DT: '2023-09-23 10:30:00',
      M_ImgSrc: '',
      OrderType: 2,
      CIdx: 1,
      Price: 30,
      Progress: 0,
    };
    axios
      .post(
        '[uri]/Orders',
        data,
      )
      .then(response => { 
        Alert.alert('已送單!');
      })
      .catch(error => {
        Alert.alert('送單失敗!');
      });
  };
  • id 使用隨機生成唯一訂單。
  • 使用axios.post方法將data物件發送到[uri]/Orders的API端點。
  • 如果API回應成功,顯示「已送單!」的Alert視窗。
  • 如果API請求失敗,則顯示「送單失敗!」的Alert視窗。

上一篇
[Day 26] 透過幾行修改成兩支不同APP
系列文
用React Native打造找餐店APP27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言