How will ripple handle forms? #240
-
|
That's one annoyance that React has recently (tried to?) address with new APIs like 'useActionState', or with 3rd party libs like react-h**k-form. How does ripple plan to address forms? |
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 4 replies
-
|
so far there seems not to be any built in way of doing this except a js work around: }
{$username}
{$username = e.target.value}} class="mx-2 border-green-400 border"/>
{$password = e.target.value}} class="mx-2 border-green-400 border"/>
|
Beta Was this translation helpful? Give feedback.
-
|
// Example pages const submit = (e: Event)=>{ } {"Home Page"}$count--}>{"-"} {$count} $count++}>{"+"}
{$username}
{$username = e.target}} class="mx-2 border-green-400 border"/>
{$password = e.target.value}} class="mx-2 border-green-400 border"/>
} i was wrong initially. this is correct. i hope it's what you were looking for? |
Beta Was this translation helpful? Give feedback.
-
|
Feel free to check this out (make sure you have newest version installed): import { effect, track, createContext } from 'ripple';
export const FormContext = createContext<Record<string, any>>({});
function register(name: string) {
const formData = FormContext.get();
return {
name: name,
value: @formData[name],
oninput: function (e: any) {
e.preventDefault();
formData = {...@formData, [name]: e.target.value};
},
onchange: function (e: any) {
e.preventDefault();
formData = {...@formData, [name]: e.target.type === 'checkbox' ? e.target.checked : e.target.value};
}
};
};
export component Form({ id, children, initialValues, onChange }) {
let formData = track(@initialValues)
FormContext.set(formData)
effect(() => {
onChange(@formData)
})
<form id={id}>
<children />
</form>
}
export component App() {
let formData = track({ username: 'testable', isAdmin: false })
<Form id="form" initialValues={formData} onChange={data => { @formData = data }}>
<input {...register('username')} type="text" />
<input {...register('isAdmin')} type="checkbox" />
<button {...register('submit')}>{@formData.username}</button>
<button {...register('submitAdmin')}>{@formData.isAdmin ? 'Admin' : 'User'}</button>
</Form>
} |
Beta Was this translation helpful? Give feedback.
-
|
These are great. However, this changes dont seem to be available at npm yet, right? cause i see last update is ripple@0.2.46 which updated this morning. |
Beta Was this translation helpful? Give feedback.
Feel free to check this out (make sure you have newest version installed):