5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-07 23:33:05 +08:00
wails/v3/internal/templates/react-ts/frontend/src/App.tsx

57 lines
1.6 KiB
TypeScript

import { useState, useEffect } from 'react'
import {GreetService} from "../bindings/changeme";
import {Events, WML} from "@wailsio/runtime";
function App() {
const [name, setName] = useState<string>('');
const [result, setResult] = useState<string>('Please enter your name below 👇');
const [time, setTime] = useState<string>('Listening for Time event...');
const doGreet = () => {
let localName = name;
if (!localName) {
localName = 'anonymous';
}
GreetService.Greet(localName).then((resultValue: string) => {
setResult(resultValue);
}).catch((err: any) => {
console.log(err);
});
}
useEffect(() => {
Events.On('time', (timeValue: any) => {
setTime(timeValue.data);
});
// Reload WML so it picks up the wml tags
WML.Reload();
}, []);
return (
<div className="container">
<div>
<a data-wml-openURL="https://wails.io">
<img src="/wails.png" className="logo" alt="Wails logo"/>
</a>
<a data-wml-openURL="https://reactjs.org">
<img src="/react.svg" className="logo react" alt="React logo"/>
</a>
</div>
<h1>Wails + React</h1>
<div className="result">{result}</div>
<div className="card">
<div className="input-box">
<input className="input" value={name} onChange={(e) => setName(e.target.value)} type="text" autoComplete="off"/>
<button className="btn" onClick={doGreet}>Greet</button>
</div>
</div>
<div className="footer">
<div><p>Click on the Wails logo to learn more</p></div>
<div><p>{time}</p></div>
</div>
</div>
)
}
export default App