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

REACT export hook ???

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
224 wizyt
pytanie zadane 26 grudnia 2020 w JavaScript przez sKodowany Obywatel (1,150 p.)

Witam ponownie,

 

Pytanie brzmi - jak zrobić export hooka z FileA do FileB i vice versa by wzrost wartości w FileA obniżał wartość w FileB. I vice versa kiedy klikamy w FileB

Kod skrócony, uproszczony


FileA:

import React, {useState} from 'react'
import {valB, setValB} from './FileB'

function FileA() {

    const [valA, setValA] = useState(1)


    return (<>
            <button 
                onClick={()=> ( setValA(valA+1), setValB(valB-1)
                )}
                > {valA} </button>

    </>)
}

export default FileA

File B: to samo tylko inne nazwy, rzecz jasna

Próbowałem z różnymi opcjami export / import - ale żadna nie działa...

1 odpowiedź

0 głosów
odpowiedź 29 grudnia 2020 przez rafal.budzis Szeryf (85,380 p.)

Jest parę rozwiązań. Najprostszym wydaje się zapisywanie stanu w komponencie wyżej? 

function Component() {
    const [valA, setValA] = useState(1)
    const [valB, setValB] = useState(1)

    return <div>
        <FileA value={valA} setValue={()=> ( setValA(valA+1), setValB(valB-1)} />
        <FileB value={valB} setValue={()=> ( setValB(valB+1), setValA(valA-1)} />
    </div>
}


FileA: 
function FileA({value, setValue}) {
    return <button onClick={setValue} > {value} </button>
}

Jeśli komponenty FileA i FileB są wywoływane w rożnych miejscach i nie można tego zmienić wówczas przydadzą się konteksty reactowe :) 

komentarz 29 grudnia 2020 przez sKodowany Obywatel (1,150 p.)

Generalnie znalazłem rozwiązanie - czy może dostałem - na Stack...

Ale w moim programistycznym przypadku nieco mi sprawę komplikuje...

Mam bowiem 5 plików każdy zawierający Button i swoją zmienną aktywności Active.

Button1: onClick -> ActiveBut1++ && restActiveButts--

Czego użyć - jak to podzielić i czym powiązać - by nie tylko działało (wciśnięte w jeden plik typu Class działa = 500 linii kodu LOL) - ale miało grację i programistyczny ład?!

Jeżeli widzę to tak:

App.js:


  return (
   <div className="App">
    <Title/>
    <First/>
    <Second />
    <Third/>
    <Fourth/>
    <Fifth/>    
  </div>
  );

Nth.js

const [valN, setValN ] = useState(1)
const [buttN, setButtN ] = useState(1) ---> niech to się nazywa: poziom aktywności przycisku

<bubtton onClick=() => {

  setValN(valN+1),
  setButtN(buttN+1), - wzrost poziomu aktywności dla tego przycisku
  set.Butt[!N](val - 1)  - spadek poziomu aktywności dla reszty przycisków

}  >

To  czy Twoje rozwiązanie będzie w moim wypadku dobre?

Jestem nowy w React, więc nie mam jeszcze skali porównawczej - może prócz tego mojego  500 liniowego pliku, który śmieje się mi się prosto w nos... ;-))

Podobne pytania

+1 głos
1 odpowiedź 576 wizyt
pytanie zadane 3 sierpnia 2021 w JavaScript przez xjafajx Użytkownik (740 p.)
0 głosów
0 odpowiedzi 168 wizyt
0 głosów
1 odpowiedź 118 wizyt
pytanie zadane 2 lutego 2019 w PHP przez Piotr Szramowski Użytkownik (860 p.)

93,189 zapytań

142,204 odpowiedzi

322,028 komentarzy

62,517 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 2817p. - dia-Chann
  2. 2769p. - Łukasz Piwowar
  3. 2759p. - Łukasz Eckert
  4. 2738p. - CC PL
  5. 2704p. - Tomasz Bielak
  6. 2678p. - Łukasz Siedlecki
  7. 2666p. - rucin93
  8. 2485p. - Marcin Putra
  9. 2418p. - Michal Drewniak
  10. 2367p. - Adrian Wieprzkowicz
  11. 2317p. - Mikbac
  12. 2239p. - Michał Telesz
  13. 2156p. - Anonim 3619784
  14. 1733p. - rafalszastok
  15. 1628p. - Dominik Łempicki (kapitan)
Szczegóły i pełne wyniki

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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...