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

React, JS - komponent i mapowanie

0 głosów
642 wizyt
pytanie zadane 25 marca 2021 w Inne języki przez karolina_web Nowicjusz (140 p.)

Cześć,

potrzebuję na podstronę wstawić komponent, który będzie wyświetlał cztery produkty w jednym rzędzie. Ten sam komponent na stronie głównej  wyświetla 8 produktów, cztery w jednym rzedzie i cztery w drugim rzedzie. Tu jest część kodu która właśnie sprawia, ze jest wstawianych na stronie 8x produkt:

class NewFurniture extends React.Component {

 (...)
<div
            className={'row' + (isFading ? ' ' + styles.fadeout : ' ' + styles.fadein)}
          >
            {categoryProducts
              .slice(activePage * 8, (activePage + 1) * 8)
              .map((item, i) => (
                <div key={item.id} className='col-6 col-md-4 col-lg-3'>
                  <ProductBox image={image} {...item} number={i} product={item} />
                </div>
              ))
            }
          </div>

}

Na stonie głównej został  zimportowany cały komponent jako :
<NewFurniture />
Teraz ten sam komponent mam zimportować do podstrony. I tu moje pytanie. Czy jest jakas możliwość, aby np w powyzszym kodzie za pomoca if else lub innej opcji wyrenderował produkty, gdzie na stronie głownej bedzie wyswietlało 8 produktów, a na podtronie tylko 4?  Czy może gdy zimportuje <NewFurniture /> do podstrony można to jakoś zredukować?

1
komentarz 26 marca 2021 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
Tak z ciekawości, dlaczego używasz komponentów klasowych?

1 odpowiedź

0 głosów
odpowiedź 26 marca 2021 przez rafal.budzis Szeryf (85,900 p.)

Potrzebne ci są props czyli właściwości które możemy przekazać do komponentu. Dzięki nim możesz sobie zmienić obecne wywołanie na : 
 

<NewFurniture showItems={8} /> 



a tam gdzie masz dodać nowe zrobić 
 

<NewFurniture showItems={4} /> 



Następnie zamieniasz 


.slice(activePage * 8, (activePage + 1) * 8)



na 


.slice(activePage * this.props.showItems, (activePage + 1) * this.props.showItems)



Zachęcam też do poczytania dokumentacji bo są to podstawy :) https://pl.reactjs.org/docs/components-and-props.html

Podobne pytania

0 głosów
2 odpowiedzi 2,789 wizyt
pytanie zadane 2 maja 2020 w JavaScript przez kalczur Gaduła (4,320 p.)
+1 głos
1 odpowiedź 219 wizyt
pytanie zadane 27 maja 2021 w JavaScript przez p4wix Obywatel (1,040 p.)
0 głosów
1 odpowiedź 239 wizyt
pytanie zadane 4 maja 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)

93,600 zapytań

142,524 odpowiedzi

322,993 komentarzy

63,085 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

Kursy INF.02 i INF.03
...