Ситуация следующая:
У меня есть несколько кнопок, которые выполняют разные асинхронные функции.
Все они кнопки прогресса
Я хочу, чтобы при нажатии кнопки менялась метка, указывающая на состояние функциональности (название функциональности, загрузка, выполнение или ошибка, если это необходимо)
Все работает нормально но текст не меняется
Примечание. На данный момент я не реализовал все четыре функции, но с одной должна работать
вот компоненты.
Компонент 1 - контейнер
<script>
import Button from '../components/Button.svelte'
import { cubiqSetUp } from '../../../store/store.js'
import { fly } from 'svelte/transition'
import URLS from '../../../api/endpoints.js'
let loadingEffect = false
let ButtonText = null
async function calibrate(current) {
console.log(current.detail)
loadingEffect = true
ButtonText = 'CARGANDO...'
console.log(ButtonText)
let { calibrateURL } = await URLS()
await fetch(calibrateURL)
.then(response => {
loadingEffect = false
ButtonText = 'LISTO'
response.json()
setTimeout(() => {
ButtonText = current.detail
}, 1500)
})
.catch(error => {
ButtonText = 'ERROR'
loadingEffect = false
setTimeout(() => {
ButtonText = current.detail
}, 1500)
})
}
</script>
<div class="Buttons">
<div class="Buttons-container">
<Button
on:active={() => console.log('Pending')}
{loadingEffect}
ButtonText="CUBICAR" />
<Button
on:active={calibrate}
{loadingEffect}
ButtonText="CALIBRAR"
delay={400} />
{#if $cubiqSetUp.print_info === 'true' && $cubiqSetUp.OCR === 'true'}
<Button ButtonText="IMPRIMIR" delay={800} />
{:else if $cubiqSetUp.print_info === 'true'}
<Button ButtonText="GUARDAR" delay={800} />
<Button ButtonText="IMPRIMIR" delay={1200} />
{:else if $cubiqSetUp.OCR === 'true'}
<!-- No additional buttons -->
{:else}
<Button ButtonText="GUARDAR" delay={800} />
{/if}
</div>
</div>
Компонент 1 - кнопка
<script>
import { fly } from 'svelte/transition'
import { createEventDispatcher } from 'svelte'
const dispatch = createEventDispatcher()
export let ButtonText = ''
export let delay = 200
export let loadingEffect = false
</script>
<div
transition:fly={{ delay, y: 200, duration: 2000 }}
on:click={() => dispatch('active', ButtonText)}
class="progress-btn {loadingEffect ? 'active' : ''}">
<div class="btn">{ButtonText}</div>
<div class="progress" />
</div>
Буду признателен, если вы, ребята, посмотрите