Pomoc przy wyborze bibliotek i logiki projektu

Pomoc przy wyborze bibliotek i logiki projektu
Gouda105
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:487
0

Witam,
planuję napisać aplikację React + Node.js która ma następujące działanie:

  1. Prześlij 2 pliki (docx oraz xlsx) do React
  2. Wyświetl podgląd obu plików
  3. Prześlij pliki na serwer

I stąd moje pytania:

  1. Zakładając, że mam komponent FileUpload do przesyłania plików oraz Preview do ich wyświetlania, to w jakim formacie przesyłać te pliki między komponentami? Oba są komponentami tego samego rzędu (mają wspólnego rodzica). Czy powinienem konwertować pliki do Blob? Czy wystarczy jako typ File?
  2. Czy mogę przechowywać te pliki w Redux, aby ominąć przesyłanie przez props? Czy nie spowoduje to spadku wydajności?
  3. Jakiej biblioteki używać do wyświetlania podglądu plików?
JB
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 3 godziny
  • Lokalizacja:Holandia
  • Postów:851
0

A to nie obiekt przeglądarka-window wyświetla pliki? pdf wyświetla, txt wyświetla, wideo wyświetla.

Ten komponent "FileUpload" to jest funkcja php fprintf($plik,"$_POST['zawartosc']");?

Podgląd plików (2 naraz) to nie iframe atrybut src?


edytowany 1x, ostatnio: johnny_Be_good
dzek69
Jak nie masz pojęcia to nie odpisuj, bo szkoda czasu Twojego i innych i moderacji
Gouda105
Tak źle napisanej i bezsensownej odpowiedzi dawno nie widziałem
JB
@dzek69: publicznie radzisz, żeby ktoś kto czegoś nie rozumie się nie odzywał. Jeśli ratownik medyczny nie będzie w szkole zadawał pytań, a potem połączy was wypadek, gdzie to on będzie miał na sobie czerwone majtki jak superman, to myślisz że co zrobi wtedy? Jak nie wiesz, i się odzywasz to jest najmądrzejsza rzecz jaką możesz zrobić jeśli rozumiesz co znaczy dobro wspólne.
dzek69
Tylko to nie ty zadajesz tu pytania. Jak chcesz odniesienia do szkoły to super, jesteśmy w klasie, uczymy się matematyki, @Gouda105 zadaje pytanie, a ty zaczynasz opowiadać coś o biologii, zupełnie nie na temat. Po co? Wprowadzasz zamęt. Kolejne wpisy nie na temat od Ciebie będą lądować w wirtualnym koszu, więc zastanów się czy to co piszesz jest przydatne, czy nie lepiej spędzić ten czas obserwując ptaki.
JB
Brzmi super, ja będę oglądał ptaki, a Ty robił co chcesz. Tak zróbmy tak! Kpisz?
dzek69
Moderator
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Rzeszów
1
  1. Może być File, może być Blob, React Cię tu nie ogranicza.
  2. Redux z założeń powinien przechowywać tylko te dane, które da się serializować i deserializować - jednak nic nie stoi na przeszkodzie, żeby olać te ograniczenia, w sumie w większości projektów z reduxem widziałem olewanie tego. Nie pamiętam czy nie wypływa to na Time Travelling, na pewno chodziło o to, żeby sobie dane móc zapisać do stringa celem "zawieszenia sesji" (np. do localStorage), i wznowić potem appkę z dokładnie samym stanem. Jeżeli wrzucisz do Reduxa File czy Bloba nie wypłynie to na wydajność.
  3. Nie mam pojęcia, docx preview in js znajduje np. to: https://www.npmjs.com/package/docx-preview i analogicznie dla xlsx https://www.npmjs.com/package/xlsx-preview/ -- wygląda, że powinno się sprawdzić

LukeJL
  • Rejestracja:około 11 lat
  • Ostatnio:minuta
  • Postów:8423
0
Gouda105 napisał(a):
  1. Zakładając, że mam komponent FileUpload do przesyłania plików oraz Preview do ich wyświetlania, to w jakim formacie przesyłać te pliki między komponentami? Oba są komponentami tego samego rzędu (mają wspólnego rodzica). Czy powinienem konwertować pliki do Blob? Czy wystarczy jako typ File?

Blob jest bardziej uniwersalny, bo jest w Node.js też, więc łatwiej będzie testować.
No i to też zależy od tego, jakiego formatu będzie oczekiwać biblioteka, której będziesz używać.

  1. Czy mogę przechowywać te pliki w Redux, aby ominąć przesyłanie przez props? Czy nie spowoduje to spadku wydajności?

Dlatego Redux cieszy się taką złą opinią - bo ludzie traktują go jako "escape hatch" do tego, żeby się komunikować między komponentami za każdym razem, kiedy nie wiedzą, jak inaczej to zrobić. A potem wszystko lata w Reduksie i jest on używany niezgodnie z przeznaczeniem. https://medium.com/@dan_abramov/you-might-not-need-redux-be46360cf367

Tylko, że jak masz obiekt A i obiekt B i chcesz dzielić między nimi jakieś dane, to najprościej jest po prostu użyć komponentu wyżej np.

Kopiuj
function FileUpload({ data }) {
    return <div>jestem file upload</div>;
}
function Preview({ data }) {
    return <div>jestem preview</div>;
}

function SomeComponent(props) {
    // tutaj zrób coś, żeby uzyskać obiekt someData
    return <>
      <FileUpload data={someData}/>
      <Preview data={someData}/>
    </>
}

wtedy komponent wyżej odpowiada za przekazanie tego bloba niżej.

poza tym w React masz jeszcze coś takiego jak kontekst https://react.dev/learn/passing-data-deeply-with-context

  1. Jakiej biblioteki używać do wyświetlania podglądu plików?

Jakiejś popularnej i aktywnie utrzymywanej najlepiej (na npm i Githubie będzie to widać po liczbie ściągnięć, gwiazdek, commitach, tego, co się dzieje w issues - czy jest to jakaś aktywna wtyczka, czy może ktoś, kto sobie coś kiedyś napisał lata temu i już nie wspiera).


edytowany 3x, ostatnio: LukeJL

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.