mirror of
https://github.com/vercel/next.js.git
synced 2026-09-20 02:25:18 +08:00
4466ba436b
## Description This PR ensures that the default prettier config is used for examples and templates. This config is compatible with `prettier@3` as well (upgrading prettier is bigger change that can be a future PR). ## Changes - Updated `.prettierrc.json` in root with `"trailingComma": "es5"` (will be needed upgrading to prettier@3) - Added `examples/.prettierrc.json` with default config (this will change every example) - Added `packages/create-next-app/templates/.prettierrc.json` with default config (this will change every template) ## Related - Fixes #54402 - Closes #54409
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { FormEvent, useEffect, useState } from "react";
|
|
import { useMutation, useQuery } from "convex/react";
|
|
import { api } from "../convex/_generated/api";
|
|
|
|
export default function App() {
|
|
const messages = useQuery(api.messages.list);
|
|
const sendMessage = useMutation(api.messages.send);
|
|
|
|
const [newMessageText, setNewMessageText] = useState("");
|
|
const [name, setName] = useState("user");
|
|
|
|
useEffect(() => {
|
|
setName("User " + Math.floor(Math.random() * 10000));
|
|
}, []);
|
|
|
|
async function handleSendMessage(event: FormEvent) {
|
|
event.preventDefault();
|
|
setNewMessageText("");
|
|
await sendMessage({ body: newMessageText, author: name });
|
|
}
|
|
return (
|
|
<main>
|
|
<h1>Convex Chat</h1>
|
|
<p className="badge">
|
|
<span>{name}</span>
|
|
</p>
|
|
<ul>
|
|
{messages?.map((message) => (
|
|
<li key={message._id.toString()}>
|
|
<span>{message.author}:</span>
|
|
<span>{message.body}</span>
|
|
<span>{new Date(message._creationTime).toLocaleTimeString()}</span>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
<form onSubmit={handleSendMessage}>
|
|
<input
|
|
value={newMessageText}
|
|
onChange={(event) => setNewMessageText(event.target.value)}
|
|
placeholder="Write a message…"
|
|
/>
|
|
<input type="submit" value="Send" disabled={!newMessageText} />
|
|
</form>
|
|
</main>
|
|
);
|
|
}
|