import * as WebBrowser from "expo-web-browser"; import * as React from "react"; import { Div, Image, Text, Avatar, Input } from "react-native-magnus"; import { Toast } from "@ant-design/react-native"; import { Button } from "@ui-kitten/components"; import { useInterval } from "ahooks"; import { sendSms } from "../Utils/SmsUtil"; export default function SmsInput({ label, placeholder, labelWidth, phone, onCodeChange, type, takePhone = false, }) { const [code, setCode] = React.useState(); const [interval, setInterval] = React.useState(null); const [count, setCount] = React.useState(60); React.useEffect(() => { if (takePhone) { sendSms(phone, type || "register") .then(() => { setCount(60); setInterval(1000); }) .catch(e => { console.log(e); Toast.info(e.response.data.error); }); } }, [takePhone]); useInterval( () => { setCount(count - 1); if (count === 0) { setInterval(null); } }, interval, { immediate: true } ); return (
{label} { setCode(value); onCodeChange(value); }} borderColor="gray200" />
); }