| Zeile 7: |
Zeile 7: |
| | Siehe | | Siehe |
| | * [https://www.robinwieruch.de/react-pass-props-to-component/ Vertiefung der React Props] - ausführlich unter Berücksichtigung neuerer JavaScript-Sprachkonstrukte | | * [https://www.robinwieruch.de/react-pass-props-to-component/ Vertiefung der React Props] - ausführlich unter Berücksichtigung neuerer JavaScript-Sprachkonstrukte |
| | + | |
| | + | === React Native === |
| | + | |
| | + | Seihe [[React Native]] |
| | | | |
| | == Projektstruktur == | | == Projektstruktur == |
| Zeile 14: |
Zeile 18: |
| | Siehe für eine Projektstruktur mit frontend-, backend- und shared-Quellcode auch | | Siehe für eine Projektstruktur mit frontend-, backend- und shared-Quellcode auch |
| | * https://blog.codecentric.de/2019/05/web-anwendungen-mit-node-express-typescript-entwickeln/ | | * https://blog.codecentric.de/2019/05/web-anwendungen-mit-node-express-typescript-entwickeln/ |
| | + | |
| | + | Siehe für eine Projektstruktur mit [[zustand]] und [[Next.js]]: |
| | + | * https://medium.com/@itsspss/large-scale-react-zustand-nest-js-project-structure-and-best-practices-93397fb473f4 |
| | | | |
| | === Alternative zu create-react-app === | | === Alternative zu create-react-app === |
| Zeile 43: |
Zeile 50: |
| | Für Server Side Rendering (SSR) oder Static Site Generation, ggf. mit späterer Hydration durch dynamische React-Elemente, gibt es | | Für Server Side Rendering (SSR) oder Static Site Generation, ggf. mit späterer Hydration durch dynamische React-Elemente, gibt es |
| | * cra-ssr (wohl veraltet) | | * cra-ssr (wohl veraltet) |
| | + | * [https://github.com/stereobooster/react-snap react-snap] - arbeitet mit einem Headless Chrome im Build-Prozess |
| | * [https://github.com/dzianisbohush/cra-with-ssr cra-with-ssr Anleitung zu SSR mit Hydration auf Basis von CRA] | | * [https://github.com/dzianisbohush/cra-with-ssr cra-with-ssr Anleitung zu SSR mit Hydration auf Basis von CRA] |
| | * [https://razzlejs.org/docs/static-export Razzle] | | * [https://razzlejs.org/docs/static-export Razzle] |
| Zeile 94: |
Zeile 102: |
| | Siehe | | Siehe |
| | * https://recoiljs.org/ | | * https://recoiljs.org/ |
| | + | |
| | + | |
| | + | ==== Jotai ==== |
| | + | |
| | + | Siehe |
| | + | |
| | + | * https://github.com/pmndrs/jotai |
| | | | |
| | == Testen von React == | | == Testen von React == |
| Zeile 106: |
Zeile 121: |
| | | | |
| | Siehe | | Siehe |
| | + | * [https://www.npmjs.com/package/react-window react-window], Nachfolger von react-virtualized |
| | * [https://itnext.io/handling-large-lists-and-tables-in-react-238397854625 Lange Listen darstellen während des Ladens] | | * [https://itnext.io/handling-large-lists-and-tables-in-react-238397854625 Lange Listen darstellen während des Ladens] |
| | * [https://stackoverflow.com/questions/38033442/big-list-performance-with-react Darstellen langer Listen mit React] | | * [https://stackoverflow.com/questions/38033442/big-list-performance-with-react Darstellen langer Listen mit React] |
| Zeile 121: |
Zeile 137: |
| | | | |
| | ==== Rich Text Editor ==== | | ==== Rich Text Editor ==== |
| | + | |
| | + | * [https://editorjs.io/ editor.js] |
| | + | ** kann auch [https://www.npmjs.com/package/@editorjs/table Tabellen] |
| | + | ** kann auch in [https://github.com/editor-js/awesome-editorjs?tab=readme-ov-file#react React eingebettet] werden |
| | | | |
| | * [https://github.com/ianstormtaylor/slate Slate] | | * [https://github.com/ianstormtaylor/slate Slate] |
| Zeile 143: |
Zeile 163: |
| | ** https://github.com/quilljs/quill | | ** https://github.com/quilljs/quill |
| | ** https://github.com/zenoamaro/react-quill | | ** https://github.com/zenoamaro/react-quill |
| | + | |
| | + | ==== Tabellenbearbeitung ==== |
| | + | |
| | + | Komponenten zur Nutzung in React als Editor für die Bearbeitung von Tabellen ähnlich [[Excel]]: |
| | + | |
| | + | * [https://www.ag-grid.com/react-data-grid/getting-started/ AG Grid] |
| | + | * [https://github.com/TanStack/table TanStack] |
| | + | * [https://github.com/handsontable/handsontable?tab=readme-ov-file Handsontable] |
| | + | * Plugins für Editor.js: |
| | + | ** [https://github.com/codinova-tech/editorjs-table editorjs-table], keine Formeln |
| | + | ** [https://github.com/editor-js/table editor-js/table], keine Formeln |
| | + | * [https://github.com/nick-keller/react-datasheet-grid React-Datasheet-Grid], wohl keine Formeln |
| | + | * [https://github.com/dream-num/univer Univer] - muss noch geprüft werden, ob innerhalb React einsetzbar; freie Version hat [https://univer.ai/en-US/pricing Einschränkungen] |
| | + | * [https://github.com/olifolkerd/tabulator?tab=readme-ov-file Tabulator] |
| | + | * [https://docs.sheetjs.com/docs/demos/frontend/react SheetJS] |
| | + | * [https://github.com/silevis/reactgrid ReactGrid] - wohl keine Formeln |
| | + | * [https://github.com/future-architect/cheetah-grid Cheetah Grid], wohl keine Formeln |
| | + | * [https://github.com/myliang/x-spreadsheet x-spreadsheet] - still maintained? |
| | + | |
| | + | |
| | + | Bloße Spreadsheet-Engine ohne UI (headless): |
| | + | * [https://github.com/handsontable/hyperformula HyperFormula] |
| | + | |
| | + | Kommerziell: |
| | + | * https://dhtmlx.com/docs/products/dhtmlxSpreadsheet/ |
| | + | ** Community Edition ist verfügbar (GPL v2.0) |
| | + | * [https://ej2.syncfusion.com/demos/?_gl=1*qzjtti*_gcl_au*MTI4NjYwNjc2Mi4xNzMyNjI2Mzgy*_ga*MTc2NTQwMzM5Mi4xNzMyNjI2Mzgy*_ga_41J4HFMX1J*MTczMzQxNDc2MC4yLjEuMTczMzQxNDk1OS4wLjAuMA..#/bootstrap5/spreadsheet/default.html syncFusion], mit Formeln, mit Verbinden von Zellen |
| | | | |
| | ==== Komponentensammlung ==== | | ==== Komponentensammlung ==== |
| | | | |
| − | * [https://www.primefaces.org/primereact/#/ PrimeReact] bietet ca. 70 UI-Komponenten. | + | * [https://primereact.org/ PrimeReact] bietet sehr viele UI-Komponenten. |
| | + | ** Das Schwesterprojekt [https://primeflex.org/ PrimeFlex] bietet CSS-Klassen. |
| | * [https://github.com/carbon-design-system/carbon/tree/master/packages/react IBM Carbon Desgin] | | * [https://github.com/carbon-design-system/carbon/tree/master/packages/react IBM Carbon Desgin] |
| − | | + | * [https://www.radix-ui.com/themes/playground Radix] benützt zumindest JSX, ist möglicherweise React-basiert |
| | + | * [https://ui.shadcn.com/ shadcn/ui] ist Radix-basiert. |
| | + | * [https://react.semantic-ui.com/ Semantic UI] |
| | + | ** https://www.npmjs.com/package/react-semantic-ui-datepickers |
| | + | * [https://fomantic-ui.com/ Fomantic-UI] - ein Open Source Fork von Semantic UI |
| | | | |
| | ==== Icons ==== | | ==== Icons ==== |
| Zeile 166: |
Zeile 218: |
| | ==== Diagramme ==== | | ==== Diagramme ==== |
| | | | |
| | + | * [https://airbnb.io/visx/gallery VisX] ist eine umfangreiche React-basierte Bibliothek, um Daten graphisch darstellen zu können. |
| | * https://www.npmjs.com/package/react-minimal-pie-chart | | * https://www.npmjs.com/package/react-minimal-pie-chart |
| | | | |
| Zeile 250: |
Zeile 303: |
| | new Worker(new URL('./worker.js', import.meta.url)); | | new Worker(new URL('./worker.js', import.meta.url)); |
| | Möglicherweise muss man in der tsconfig.json jedoch [https://thewebdev.info/2022/03/21/how-to-make-web-workers-with-typescript-and-webpack/ in compilerOptions.lib "webworker" ] ergänzt werden. | | Möglicherweise muss man in der tsconfig.json jedoch [https://thewebdev.info/2022/03/21/how-to-make-web-workers-with-typescript-and-webpack/ in compilerOptions.lib "webworker" ] ergänzt werden. |
| | + | |
| | + | Siehe zu Webpack5 auch: |
| | + | * https://blog.logrocket.com/web-workers-react-typescript/ |
| | | | |
| | Bisher nutzt man in Webpack v4 die "!"-Syntax von Webpack für das Laden des worker-loader aus. So kann man vorgehen: | | Bisher nutzt man in Webpack v4 die "!"-Syntax von Webpack für das Laden des worker-loader aus. So kann man vorgehen: |
| Zeile 332: |
Zeile 388: |
| | | | |
| | PDFJS.getDocument(... | | PDFJS.getDocument(... |
| | + | |
| | + | === WebWorker und NextJs === |
| | + | |
| | + | Siehe oben "create-react-app, TypeScript und WebWorkers". |
| | + | |
| | + | Siehe auch |
| | + | |
| | + | * https://github.com/vercel/next.js/tree/canary/examples/with-web-worker |
| | + | ** https://github.com/vercel/next.js/blob/canary/examples/with-web-worker/pages/index.tsx |
| | + | * https://nextjs.org/docs/messages/webpack5 |
| | + | * https://github.com/koheitakumi/nextjs-typescript-comlink |
| | + | |
| | + | ==== WebWorker, WebAssembly and NextJs ==== |
| | + | |
| | + | Mit [[WebAssembly]] kann auch compilierter Rust-Code im Browser, auch als WebWorker, ausgeführt werden: |
| | + | |
| | + | Siehe https://medium.com/lagierandlagier/nextjs-webassembly-and-web-workers-a5f7c19d4fd0 |
| | | | |
| | === Troubleshooting === | | === Troubleshooting === |