Skip to content

Instantly share code, notes, and snippets.

@jasper-lyons
Last active July 11, 2021 13:51
Show Gist options
  • Save jasper-lyons/f91d619620a2fa88694391cd8e2e1322 to your computer and use it in GitHub Desktop.
Save jasper-lyons/f91d619620a2fa88694391cd8e2e1322 to your computer and use it in GitHub Desktop.
function useTable([]) {
const [id, setId] = useState(0)
const [records, setRecords] = useState([])
function find(attrs) {
return records.filter(
record => Object
.entries(attrs)
.every(([key, value]) => record[key] === value)
)
}
function add(object) {
setRecords(previous => previous.concat({ id, ...object}))
setId(id + 1)
}
function update(id, object) {
let record = find({ id: id })
useEffect(() => {
Object.entries(object).forEach(([key, value]) => record[key] = value)
}, [])
}
function remove(id) {
setRecords(previous => previous.filter(record => record.id !== id))
}
return [
records,
add,
remove,
update,
find,
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment