Tutorial 2: Handle Side Effects
async function validateUsername(username: string) {
return new Promise<boolean>((resolve) => {
setTimeout(() => {
resolve(!username.includes('test'))
}, 1000) // assume the api request takes 1000ms to response
})
}const userModel = app.model('User', { username: '', password: '', valid: false })
const [mutations] = userModel.mutations({
...
// Added this mutation to update `valid` state
setValid: (valid: boolean) => (state) => ({ ...state, valid }),
})
export const SignUpForm = () => {
...
// Read `valid` and set Submit button to disabled if `valid` is false
const {valid} = useModel(userModel)
return (
<div>
...
<button disabled={!valid}>Submit</button>
</div>
)
}Last updated
Was this helpful?