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

react - dobre praktyki, code review componentu

VPS Starter Arubacloud
+1 głos
99 wizyt
pytanie zadane 1 września 2020 w JavaScript przez rob Bywalec (2,440 p.)

Witam, 

mam pytanie odnośnie dobrych praktyk w react.js, mam taki component

import React from 'react'
import { useInView } from "react-intersection-observer";
import { motion } from "framer-motion";

function SectionOne() {
    const [ref1, inView1] = useInView({
        rootMargin: '450px 0px',
    })
    const [ref2, inView2] = useInView({
        rootMargin: '450px 0px',
    })
    const [ref3, inView3] = useInView({
        rootMargin: '450px 0px',
    })
    const [ref4, inView4] = useInView({
        rootMargin: '450px 0px',
    })
    const [ref5, inView5] = useInView({
        rootMargin: '450px 0px',
    })

    const offer = [
        {
            picture: '1',
            name: 'Instalacje elektryczne',
            text: 'Instalacje Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores minima est aliquam fugiat, sed aperiam nulla doloremque alias eligendi amet eum maxime temporibus, odio mollitia iste hic praesentium laborum architecto enim illo! At esse, temporibus harum voluptatum sit non! Neque! Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore molestiae, earum, illum doloremque ducimus quidem dolore debitis saepe, excepturi odio voluptatibus! Commodi nostrum delectus accusamus esse aut minima, sunt neque molestias excepturi rerum perspiciatis nihil sapiente perferendis quaerat laudantium velit? ',
            ref: ref1,
            inView: inView1,
            points: () => {
                return (
                    <>
                        <div className="offer-points-slogan">Instalacja odbiorcza może składać się z następujących obwodów</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>oświetlenia ogólnego,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>gniazd wtyczkowych</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>kuchni elektrycznej,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>elektrycznego podgrzewacza wody,</div>
                    </>
                )
            }
        },
        {
            picture: '2',
            name: 'Fotowoltaika',
            text: 'Instalacje Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores minima est aliquam fugiat, sed aperiam nulla doloremque alias eligendi amet eum maxime temporibus, odio mollitia iste hic praesentium laborum architecto enim illo! At esse, temporibus harum voluptatum sit non! Neque! Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore molestiae, earum, illum doloremque ducimus quidem dolore debitis saepe, excepturi odio voluptatibus! Commodi nostrum delectus accusamus esse aut minima, sunt neque molestias excepturi rerum perspiciatis nihil sapiente perferendis quaerat laudantium velit? ',
            ref: ref2,
            inView: inView2,
            points: () => {
                return (
                    <>
                        <div className="offer-points-slogan">Instalacja odbiorcza może składać się z następujących obwodów</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>oświetlenia ogólnego,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>gniazd wtyczkowych</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>kuchni elektrycznej,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>elektrycznego podgrzewacza wody,</div>
                    </>
                )
            }
        },
        {
            picture: '3',
            name: 'Awarie elektryczne',
            text: 'Instalacje Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores minima est aliquam fugiat, sed aperiam nulla doloremque alias eligendi amet eum maxime temporibus, odio mollitia iste hic praesentium laborum architecto enim illo! At esse, temporibus harum voluptatum sit non! Neque! Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore molestiae, earum, illum doloremque ducimus quidem dolore debitis saepe, excepturi odio voluptatibus! Commodi nostrum delectus accusamus esse aut minima, sunt neque molestias excepturi rerum perspiciatis nihil sapiente perferendis quaerat laudantium velit? ',
            ref: ref3,
            inView: inView3,
            points: () => {
                return (
                    <>
                        <div className="offer-points-slogan">Instalacja odbiorcza może składać się z następujących obwodów</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>oświetlenia ogólnego,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>gniazd wtyczkowych</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>kuchni elektrycznej,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>elektrycznego podgrzewacza wody,</div>
                    </>
                )
            }
        },
        {
            picture: '4',
            name: 'Serwis i naprawa',
            text: 'Instalacje Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores minima est aliquam fugiat, sed aperiam nulla doloremque alias eligendi amet eum maxime temporibus, odio mollitia iste hic praesentium laborum architecto enim illo! At esse, temporibus harum voluptatum sit non! Neque! Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore molestiae, earum, illum doloremque ducimus quidem dolore debitis saepe, excepturi odio voluptatibus! Commodi nostrum delectus accusamus esse aut minima, sunt neque molestias excepturi rerum perspiciatis nihil sapiente perferendis quaerat laudantium velit? ',
            ref: ref4,
            inView: inView4,
            points: () => {
                return (
                    <>
                        <div className="offer-points-slogan">Instalacja odbiorcza może składać się z następujących obwodów</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>oświetlenia ogólnego,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>gniazd wtyczkowych</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>kuchni elektrycznej,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>elektrycznego podgrzewacza wody,</div>
                    </>
                )
            }
        },
        {
            picture: '5',
            name: 'Pomiary elektryczne',
            text: 'Instalacje Lorem ipsum dolor sit amet consectetur adipisicing elit. Dolores minima est aliquam fugiat, sed aperiam nulla doloremque alias eligendi amet eum maxime temporibus, odio mollitia iste hic praesentium laborum architecto enim illo! At esse, temporibus harum voluptatum sit non! Neque! Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore molestiae, earum, illum doloremque ducimus quidem dolore debitis saepe, excepturi odio voluptatibus! Commodi nostrum delectus accusamus esse aut minima, sunt neque molestias excepturi rerum perspiciatis nihil sapiente perferendis quaerat laudantium velit? ',
            ref: ref5,
            inView: inView5,
            points: () => {
                return (
                    <>
                        <div className="offer-points-slogan">Instalacja odbiorcza może składać się z następujących obwodów</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>oświetlenia ogólnego,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>gniazd wtyczkowych</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>kuchni elektrycznej,</div>
                        <div><i className="fas fa-long-arrow-alt-right"></i>elektrycznego podgrzewacza wody,</div>
                    </>
                )
            }
        },
    ]
    const mainVariants1 = {
        hidden: {
            y: 200,
            opacity: 0,
        },
        visible: {
            y: 0,
            opacity: 1,
        }
    }

    const displayOffer = offer.map((each) => {
        return (
            <div class="offer-wrapper">
                <motion.div class={`offer-wrapper-picture${each.picture}`} ref={each.ref} initial={{ opacity: 0, x: -200 }} animate={each.inView ? ({ x: 0, opacity: 1 }) : ({})} transition={{ delay: 1, ease: "easeOut", duration: 0.5 }}></motion.div>
                <div class="offer-wrapper-right">
                    <motion.div class="offer-wrapper-name" variants={mainVariants1} initial='hidden' ref={each.ref} animate={each.inView ? ('visible') : ({})} transition={{ ease: "easeOut", duration: 1, delay: 0 }}>{each.name}</motion.div>
                    <motion.div class="offer-text" variants={mainVariants1} initial='hidden' ref={each.ref} animate={each.inView ? ('visible') : ({})} transition={{ delay: 0.2, ease: "easeOut", duration: 0.5 }}>{each.text}</motion.div>
                    <motion.div class="offer-points" variants={mainVariants1} initial='hidden' ref={each.ref} animate={each.inView ? ('visible') : ({})} transition={{ delay: 0.4, ease: "easeOut", duration: 0.5 }}>
                        {each.points()}
                    </motion.div>
                    <motion.div class="offer-line" variants={mainVariants1} initial='hidden' ref={each.ref} animate={each.inView ? ('visible') : ({})} transition={{ delay: 0.6, ease: "easeOut", duration: 0.5 }}></motion.div>
                </div>
            </div>
        )
    }
    )
    return (
        <div className='section-one-container'>
            <div className="parallax-one"></div>
            <div className="offer-container">
                <div class="offer-title">Oferta</div>
                {displayOffer}
            </div>
        </div>
    )
}

export default SectionOne

w tym komponencie definiuję zmienną displayOffer która zwraca mi poszczególną ofertę, i pożniej ta zmienna jest renderowana. obiło mi się o uszy, że tak nie powinienem robić, że ta zmienna powinna być definiowana poza funkcją SectionOne tzn w nowym komponencie, czy to prawda?

proszę o code review całego komponentu

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 288 wizyt
pytanie zadane 9 października 2020 w JavaScript przez rob Bywalec (2,440 p.)
+1 głos
0 odpowiedzi 197 wizyt
pytanie zadane 10 września 2020 w JavaScript przez creend Gaduła (4,700 p.)
0 głosów
0 odpowiedzi 83 wizyt
pytanie zadane 6 kwietnia 2020 w JavaScript przez Stoprocent Użytkownik (930 p.)

93,021 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,366 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...