#shopify #vuejs3 #shopify-template
#shopify #vuejs3 #Shopify-шаблон
Вопрос:
Я пытаюсь интегрировать Vue3.x с редактором тем Shopify. Теперь я могу заставить приложение Vue работать в редакторе тем. Однако, когда я пытаюсь изменить цвет кнопки «Добавить в пакет» в разделе, цвет кнопки не может быть обновлен немедленно.
Поэтому я пытаюсь прослушать событие Shopify: раздел: выбор. Но функция remountVueApp() всегда показывает старое значение {{ section.settings.button_color }}. Поэтому я не знаю, как передать обновленное значение из section.settings в приложение Vue. Как это можно сделать?
Когда я нажимаю кнопку сохранения, настройка раздела может быть сохранена, и отображается новый цвет кнопки.
На скриншоте отображается сообщение об отладке после изменения цвета кнопки в редакторе тем
<!-- This will only render in the theme editor -->
<script src="https://unpkg.com/vue@next"></script>
<script src="https://unpkg.com/mitt/dist/mitt.umd.js"></script>
<script>
function remountVueApp() {
console.log('listen to shopify theme editor re-render. Render app to respond to DOM update');
vueApp = createMyApp();
console.log('button_color 2 = {{ section.settings.button_color }}');
buttonColor = '{{ section.settings.button_color }}';
vueApp.component('product-card', productCard)
vm = vueApp.mount('#byobApp')
}
const emitter = window.mitt();
emitter.on('shopify:section:select', remountVueApp);
const themeEventHandler = (event) => {
console.log(event.detail.load)
if (event.detail.load) {
// emit a generic version
console.log('button_color 1 = {{ section.settings.button_color }}');
emitter.emit(`${event.type}`, event);
}
};
// these are custom events emitted by the Shopify section editor
// we are hooking them up to our Vue event dispatcher
document.addEventListener('shopify:section:select', themeEventHandler);
</script>
Комментарии:
1. он считает, что вам не нужно добавлять какой-либо жидкий код в файл JS, используйте его в разделах в жидком коде, он автоматически изменится, как только вы обновите какое-либо значение внутри разделов.
2. Да, я пытался определить тестовый класс в теге <style> . Класс включает в себя настройки раздела. Теперь это работает. Спасибо
3. рад знать, что это работает для вас.