generated from justintaddei/npm-ts-template
-
-
Notifications
You must be signed in to change notification settings - Fork 17
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Hey,
Excited for a new version of this library with some possible improvements. Just wanted to make a few recommendations:
- A "non-mixin" way of doing $keepSharedElementAlive. For example:
import { ref, onMounted, onActivated } from 'vue'
// by convention, composable function names start with "use"
export function useSharedElementKeepAlive() {
// state encapsulated and managed by the composable
const sharedElementTriggers = ref([]);
const sharedElementFirstRender = ref(true);
onMounted(() => {
sharedElementTriggers.value.forEach((trigger) => {
return trigger();
});
});
onActivated(() => {
if (sharedElementFirstRender.value) {
return (sharedElementFirstRender.value = false);
}
sharedElementTriggers.value.forEach((trigger) => {
return trigger();
});
});
function keepSharedElementAlive(trigger) {
sharedElementTriggers.value.push(trigger);
}
// expose managed state as return value
return {
keepSharedElementAlive,
};
}
Could then be used in setup() more nicely. Keep in mind there is a potential bug with this implementation (that also exists in the current mixin as well): vuejs/core#7276
-
A way to use this library without vue-router
-
A way to enable/disable by parameter on the directive (e.g. v-shared-element="{disabled: true}")
justintaddei
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request