Réagir JS Error: Invalid tenter de se déstructurent non-itératif exemple

J'ai une sorte de filtre qui prend un tableau pour remplir les options. En essayant de voir l'option value égal au texte dans le tableau, mais j'ai l'erreur dans le titre:

Invalid attempt to destructure non-iterable instance

J'ai besoin de passer le texte en tant que valeur à l'intérieur de la balise d'option, de sorte que lorsque l'utilisateur met à jour le filtre, le texte correct s'affiche pour le choix de l'utilisateur.

Voici mon code:

function Sorting({by, order, rp}: SortingProps) {
    const opts = [
        ['Price (low)', 'price', 'asc'],
        ['Price (high)', 'price', 'desc'],
        ['Discount (low)', 'discount', 'asc'],
        ['Discount (high)', 'discount', 'desc'],
        ['Most popular', 'arrival', 'latest'],
        ['Most recent', 'arrival', 'latest'],
    ];

    const onChange = (i) => {
        const [text, by, order] = opts[i];
        refresh({so: {[by]: order}});
        /* GA TRACKING */
        ga('send', 'event', 'My Shop Sort By', text, 'Used');
    };

    return (
        <div className={cn(shop.sorting, rp.sorting.fill && shop.sortingFill)}>
            <Select className={shop.sortingSelect} label="Sort By" onChange={onChange} value={`${by}:${order}`}>
                {opts.map(([text], i) =>
                    <Option key={i} value={text}>{text}</Option>
                )}
            </Select>
        </div>
    )
}
Sur quelle ligne l'erreur se produit? Quelle est la valeur réelle de i être transmis à votre onChange gestionnaire? Je devine que c'est un objet d'Événement, pas un entier.
Je pense que le problème est dans le paramètre i vous acceptez. Ce ne sera pas un nombre. Vous ne pouvez pas l'utiliser comme un tableau d'index.

OriginalL'auteur Filth | 2017-02-09