mirror of
https://github.com/wasp-lang/wasp.git
synced 2024-12-19 15:11:52 +03:00
1.5 KiB
1.5 KiB
title |
---|
Updating tasks |
import useBaseUrl from '@docusaurus/useBaseUrl';
Todo app isn't done if you can't mark a task as done!
For that, we will need to do two things:
- Implement Wasp action that updates the task.
- Modify our React code so it calls that action.
Action
Wasp declaration
We declare Wasp action:
// ...
action updateTask {
fn: import { updateTask } from "@ext/actions.js",
entities: [Task]
}
JS implementation
We define JS implementation of Wasp action in ext/actions.js
:
// ...
export const updateTask = async (args, context) => {
return context.entities.Task.update({
where: { id: args.taskId },
data: {
isDone: args.data.isDone
}
})
}
React logic
And we update the React component:
// ...
import updateTask from '@wasp/actions/updateTask'
// ...
const Task = (props) => {
const handleIsDoneChange = async (event) => {
try {
await updateTask({
taskId: props.task.id,
data: { isDone: event.target.checked }
})
} catch (error) {
window.alert('Error while updating task: ' + error.message)
}
}
return (
<div>
<input
type='checkbox' id={props.task.id}
checked={props.task.isDone}
onChange={handleIsDoneChange}
/>
{props.task.description}
</div>
)
}
// ...
Awesome! We can now tick this task as done ;).