У меня есть проект, созданный с использованием Vue CLI 3 с включенным плагином Vue для PWA.Я хотел бы отобразить баннер, предлагающий пользователю щелкнуть ссылку «Обновить» в приложении, как описано здесь в разделе «Подход № 3».
Но в моем Vue.jsприложение, потому что код сервисного работника выполняется в main.js
, а мой баннер снэк-бара встроен в мой компонент App.vue
, я не уверен, как вызвать мой метод showRefreshUI()
после события сервис-работник updated()
был вызван.
main.js
(соответствующая часть)
import Vue from 'vue';
import App from './App';
import './registerServiceWorker';
new Vue({
router,
render: h => h(App),
}).$mount('#app');
register-service-worker
(соответствующая часть)
import { register } from 'register-service-worker';
if (process.env.NODE_ENV === 'production') {
register(`${process.env.BASE_URL}service-worker.js`, {
updated (registration) {
console.log('New content is available; please refresh.');
// I'd like to call App.vue's showRefreshUI() method from here.
},
});
}
App.vue
(соответствующая часть)
<script>
export default {
name: 'App',
mounted () {
// Alternatively, I'd like to call this.showRefreshUI() from here
// when the service worker's updated() method is called.
},
methods: {
showRefreshUI () {
// My code to show the refresh UI banner/snackbar goes here.
},
},
};
</script>
Если я не могу вызвать метод showRefreshUI()
из main.js
, как я могу передать что-то из события updated()
в mounted()
хук жизненного цикла App.vue
, чтобы выполнить то же самое?основная вещь?