Skip to content

Instantly share code, notes, and snippets.

@zaydek
Created January 24, 2021 15:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zaydek/99d9b632b3a757cabe2a4dbfc1d7d24e to your computer and use it in GitHub Desktop.
Save zaydek/99d9b632b3a757cabe2a4dbfc1d7d24e to your computer and use it in GitHub Desktop.
import { useMemo, useState } from "react"
class Form {
state = {
user: "Hello, world!",
pass: "Hello, world!",
}
constructor({ user, pass } = { user: "Hello", pass: "World" }) {
this.state = {
user,
pass,
}
}
setUser(user) {
this.state.user = user
}
setPass(pass) {
this.state.pass = pass
}
}
function useRender() {
const [, setState] = useState(0)
return () => setState(s => s + 1)
}
export default function App() {
const form = useMemo(() => new Form(), [])
const render = useRender()
return (
<>
<form>
<input
type="text"
value={form.state.user}
onChange={e => {
form.setUser(e.target.value)
render()
}}
/>
<input
type="text"
value={form.state.pass}
onChange={e => {
form.setPass(e.target.value)
render()
}}
/>
</form>
<pre>here: {JSON.stringify(form, null, 2)}</pre>
</>
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment