main
tsx 51 lines 1.4 KB
Raw
1 import { useState } from "react";
2 import reactLogo from "./assets/react.svg";
3 import { invoke } from "@tauri-apps/api/core";
4 import "./App.css";
5
6 function App() {
7 const [greetMsg, setGreetMsg] = useState("");
8 const [name, setName] = useState("");
9
10 async function greet() {
11 // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/
12 setGreetMsg(await invoke("greet", { name }));
13 }
14
15 return (
16 <main className="container">
17 <h1>Welcome to Tauri + React</h1>
18
19 <div className="row">
20 <a href="https://vite.dev" target="_blank">
21 <img src="/vite.svg" className="logo vite" alt="Vite logo" />
22 </a>
23 <a href="https://tauri.app" target="_blank">
24 <img src="/tauri.svg" className="logo tauri" alt="Tauri logo" />
25 </a>
26 <a href="https://react.dev" target="_blank">
27 <img src={reactLogo} className="logo react" alt="React logo" />
28 </a>
29 </div>
30 <p>Click on the Tauri, Vite, and React logos to learn more.</p>
31
32 <form
33 className="row"
34 onSubmit={(e) => {
35 e.preventDefault();
36 greet();
37 }}
38 >
39 <input
40 id="greet-input"
41 onChange={(e) => setName(e.currentTarget.value)}
42 placeholder="Enter a name..."
43 />
44 <button type="submit">Greet</button>
45 </form>
46 <p>{greetMsg}</p>
47 </main>
48 );
49 }
50
51 export default App;