• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

React - problem z wywołaniem wartości z Tablicy z użyciem props

Object Storage Arubacloud
0 głosów
121 wizyt
pytanie zadane 28 stycznia 2021 w JavaScript przez sKodowany Obywatel (1,150 p.)

Witam ponownie.

Znów utknąłem na drobiazgu, którego jednak nie mogę strawić.

Mam coś takiego:

Main.js:

...
<>

 <Message keyWord="a"/>
 <Message keyWord="b"/>
 <Message keyWord="c"/>

</>

Message.js

import React, { useState } from 'react'

function Message(props) {

    const aFatePack = ['plusA', 'noneA', 'minusA']
    const bFatePack = ['plusB', 'noneB', 'minusB']
    const cFatePack = ['plusC', 'noneC', 'minusC']

    const [temp, setTemp] = useState(props.keyWord)
    const [temp2, setTemp2] = useState(`${props.keyWord}FatePack`)
    const [temp3, setTemp3] = useState(`${props.keyWord}FatePack`[1])

    return (
        <div>         
            tempA: {temp}
            <br></br>
            tempB: {temp2}
            <br></br>
            tempC: {temp3}
            <br></br>
            keyWord: {props.keyWord}
            
        </div>
    )
}

export default Message

{temp} oraz {temp2} - działa, ale {temp3} - już nie działa.

Proszę o wskazanie lub podpowiedzenie, gdzie popełniam błąd.

Dziękuję :-)

komentarz 28 stycznia 2021 przez yapyap Obywatel (1,730 p.)
edycja 28 stycznia 2021 przez yapyap
const [temp3, setTemp3] = useState(`${props.keyWord[1]}FatePack`)

 

na tym forum precyzuj naprawdę dobrze wiadomości bo powoli zamienia się w elektrode, poprosiles o podpowiedzenie gdzie jest błąd i zaraz ktos ci napisze "w kodzie" i tyle, zasilacz z czarnej listy, zamykam.

1
komentarz 28 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

{temp} oraz {temp2} - działa, ale {temp3} - już nie działa.

@sKodowany, jesteś pewien, że temp2 działa tak jak oczekujesz? Na oko, zmienna temp2 zawiera string "aFatePack", a nie tablicę (wartość zmiennej aFatePack) - i to się tyczy pozostałych przypadków, gdzie props.keyWord jest wartością "b" i "c".

@yapyap, `${props.keyWord[1]}FatePack` to również nie powinno działać, bo jeśli props.keyWord jest jedno znakowym stringiem, to indeks [1] zwraca undefined, więc wynikiem jest string "undefinedFatePack". I to także zwraca string, a nie tablicę przypisaną do zmiennej o tej nazwie.

komentarz 28 stycznia 2021 przez sKodowany Obywatel (1,150 p.)
temp2 - jest tylko przykładem, że szukałem rozwiązania krok po kroku - sprawdzając, czy w ogóle jestem w stanie wyświetlić stringa będącego zarazem nazwą tablicy.

Ale dziękuję za czujność - ;-)

1 odpowiedź

+1 głos
odpowiedź 28 stycznia 2021 przez ScriptyChris Mędrzec (190,190 p.)

Jeśli dobrze rozumiem, co chcesz zrobić, to stworzyłbym obiekt, którego kluczami będą wartości (w pokazanym przykładzie - litery) przekazywane przez props.keyWord, a wartościami tablice. Taka struktura nie będzie wymagać używania interpolacji do operowania na niej.

    // niech props.keyWord === 'a'

    const fatePacks = {
        a: ['plusA', 'noneA', 'minusA'],
        b: ['plusB', 'noneB', 'minusB'],
        c: ['plusC', 'noneC', 'minusC'],
    };
 
    const [temp, setTemp] = useState(props.keyWord)
    const [temp2, setTemp2] = useState(fatePacks[props.keyWord]) // ['plusA', 'noneA', 'minusA']
    const [temp3, setTemp3] = useState(fatePacks[props.keyWord][1]) // 'noneA'
 

W przykładzie z odczytem indeksu 1 (tworzenie temp3) założyłem, że chodzi Ci wydobycie pierwszego elementu tablicy.

komentarz 28 stycznia 2021 przez sKodowany Obywatel (1,150 p.)
Ooo,

No tak - z chwilą, gdy tylko zobaczyłem słowo 'obiekt' - dotarło do mnie, że to jedno z rozwiązań!

Dziękuję - zmienię na obiekt i wykorzystam ten model myślenia w przyszłości.

Pozdrawiam uprzejmie,

S. ;-)

Podobne pytania

0 głosów
1 odpowiedź 131 wizyt
0 głosów
1 odpowiedź 161 wizyt
0 głosów
0 odpowiedzi 340 wizyt
pytanie zadane 3 stycznia 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

92,565 zapytań

141,416 odpowiedzi

319,596 komentarzy

61,948 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...