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

biblioteka React sens użycia komponentów

Object Storage Arubacloud
0 głosów
110 wizyt
pytanie zadane 15 listopada 2022 w JavaScript przez marek1233211 Nowicjusz (150 p.)

Witam,

Mam pytanie odnośnie sensu używania komponentów w bibliotece React. Otóż Mam dylemat odnośnie dwóch programów, które działają identycznie z punktu widzenia użytkownika, natomiast czy drugi program napisany z użyciem komponentów PositiveMessage oraz NegativeMessage jest pod jakimś względem lepszy od pierwszego programu ? Jeśli tak to proszę o wyjaśnienie.

class App extends React.Component {
    state = {
        check: false,
        isFormSubmitted: false
    }
    handleChangeChecked = () => {
        this.setState({
            check: !this.state.check,
            isFormSubmitted: false
        })
        return (true)
    }
    displayMsg = () => {
        if (this.state.isFormSubmitted == true) {
            if (this.state.check == true)
                return (<p>Możesz obejrzeć film!</p>)
            else return (<p>Nie możesz obejrzeć filmu.</p>)
        } else return (null)
    }
    handleFormSubmit = (e) => {
        e.preventDefault()
        this.setState({
            isFormSubmitted: true
        })
    }
    render() {
        return (
            <React.Fragment>
                <h1>Kup bilet</h1>
                <form onSubmit={this.handleFormSubmit}>
                    <input type="checkbox" onChange={this.handleChangeChecked} checked={this.state.check} />
                    <label>Mam conajmniej 16 lat</label>
                    <button>Kup bilet</button>
                </form>
                {this.displayMsg()}
            </React.Fragment>
        )
    }
}

ReactDOM.render(< App />, document.getElementById('root'));
const PositiveMessage = () => <p>Mozesz obejrzeć film, zapraszam</p>;
const NegativeMessage = () => <p>Nie możesz obejrzeć tego filmu !</p>;
class TicketShop extends React.Component {
  state = {
    isConfirmed: false,
    isFormSubmitted: false
  }
  handleCheckboxChange = () => {
    this.setState({
      isConfirmed: !this.state.isConfirmed,
      isFormSubmitted: false
    })
  }
  displayMessage = () => {
    if (this.state.isFormSubmitted) {
      if (this.state.isConfirmed) { return <PositiveMessage /> }
      else { return <NegativeMessage /> }
    } else { return null }
  }
  handleFormSubmit = (e) => {
    e.preventDefault()
    if (!this.state.isFormSubmitted) {
      this.setState({
        isFormSubmitted: !this.state.isFormSubmitted
      })
    }
  }
  render() {
    return (
      <>
        <h1>Kup bilet na horror roku !</h1>
        <form onSubmit={this.handleFormSubmit}>
          <input type="checkbox" id="age" onChange={this.handleCheckboxChange} checked={this.state.isConfirmed} />
          <label htmlFor="age">Mam conajmniej 16 lat</label>
          <br />
          <button type="submit">Kup bilet</button>
        </form>
        {this.displayMessage()}
      </>
    )
  }
}
ReactDOM.render(<TicketShop />, document.getElementById('root'))

 

1 odpowiedź

+2 głosów
odpowiedź 15 listopada 2022 przez Comandeer Guru (601,110 p.)
wybrane 15 listopada 2022 przez marek1233211
 
Najlepsza

TBH obydwie wersje są IMO takie se.

W pierwszej faktycznie można by wydzielić ten komunikat do osobnego komponentu, ale raczej nie tak jak w drugim przykładzie. Komponenty z założenia są reużywalne i przy niewielkim nakładzie pracy można by zrobić komponent Message, do którego przekazywałoby się tekst wiadomości jako prop/children, podobnie zresztą jak np. typ wiadomości (sukces, błąd itd.).

Dzięki temu taki komponent komunikatu można by użyć też w wielu innych miejscach, nie tylko w tym jednym konkretnym miejscu.

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
+3 głosów
3 odpowiedzi 376 wizyt
0 głosów
1 odpowiedź 532 wizyt
pytanie zadane 26 grudnia 2019 w JavaScript przez poldeeek Mądrala (5,980 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...