Skip to content

Allow useArchive and useArchiveProperty clients to resolve references.

Markus Scheidgen requested to merge use-archive into develop

This MR provides the functionality that is need to useArchive and resolve references. This should now be used like this:

const {value, resolveRef} = useArchiveProperty('results/properties/electronic')
const dos = resolveRef(value.dos_electronic.total[0])
const docValues = dos.value

If the useArchiveProperty call is far away from the resolveRef call, the resovleRef can also be grabbed from useArchive within any arbitrary child component:

In the parent:

const {value, resolveRef} = useArchiveProperty('results/material/properties/electronic')
return <SomeSubComponent electronicProperties={value}/>

In some SubSubSubComponent:

const archive = useArchive()
...
archive.resolveRef(...)

Alternatively, you can also use just useArchive:

const archive = useArchive()
...
archive.resolveRef(archive.archive.result.properties.electronic.dos_electronic.total[0])

Be aware that the result of useArchive is an instance of Archive from useArchive.tsx. Its not an object with keys. Don't do this

const {archive, resolveRef} = useArchive()  // WRONG

Any call to resultRef will cause an exception because the this is not properly passed.

Instead do:

const archive = useArchive()  // right
archive.resolveRef(archive.archive....)

Merge request reports

Loading