Невозможно получить доступ к 'variable_name' до инициализации - PullRequest
0 голосов
/ 27 мая 2019

При использовании реактивных переменных путем объявления их с использованием синтаксиса $: вы получаете следующую ошибку:

Cannot access 'variable_name' before initialization

Вот код:

App.svelte

<script>
    import { ledzep, redhotchilis } from './data.js'

    $: bandmembers = [...ledzep, ...redhotchilis]

    let namesWithA = bandmembers.filter(d => {
            if (d.indexOf('a') > 0) {               
                return true;
            }
        else {
            return false
        }
    })

</script>
<h2>Band Members</h2>
<ul>
{#each bandmembers as member}
    <li>{member}</li>
{/each}
</ul>

<h2>Members with "A" in their names</h2>
<ul>
{#each namesWithA as member}
    <li>{member}</li>
{/each}
</ul>

data.js

export const ledzep = ["Jimmy Page", "John Bonham", "Robert Plant", "John Paul Jones"]
export const redhotchilis = ["Anthony Kiedis", "Flea", "Chad Smith", "Josh Klinghoffer"]

1 Ответ

1 голос
/ 27 мая 2019

Когда вы присваиваете переменные с помощью $:, вы не можете назначать как часть других переменных, объявленных с использованием let, const или var.

В приведенном выше коде необходимо изменить следующую строку.

let namesWithA = bandmembers.filter(d => {
            if (d.indexOf('a') > 0) {               
                return true;
            }
        else {
            return false
        }
    })

к следующему.

$: namesWithA = bandmembers.filter(d => {
            if (d.indexOf('a') > 0) {               
                return true;
            }
        else {
            return false
        }
    })

Таким образом, когда вы делаете назначения, используя $:, вы можете использовать их только в других переменных, назначенных с помощью $:. Мне потребовалось некоторое время, чтобы понять это, и я просто хотел поделиться этим с любыми другими новичками Svelte , которые начинают эту новую технологию.

...