From d5c52968a6cf9884701fd922d23a31ad79e6ba7e Mon Sep 17 00:00:00 2001 From: e560248 Date: Tue, 8 Apr 2025 14:05:32 +0200 Subject: [PATCH] add MobX --- react-advanced-tag1/.prettierrc.mjs | 8 ++-- react-advanced-tag1/package-lock.json | 46 +++++++++++++++++++ react-advanced-tag1/package.json | 2 + react-advanced-tag1/src/App.tsx | 2 + .../common/components/Header/Navigation.tsx | 9 +++- .../common/components/Header/navigation.css | 28 +++++++++++ .../src/common/stores/mobx-store.ts | 29 ++++++++++++ react-advanced-tag1/src/pages/MobXPage.tsx | 35 ++++++++++++++ 8 files changed, 153 insertions(+), 6 deletions(-) create mode 100644 react-advanced-tag1/src/common/components/Header/navigation.css create mode 100644 react-advanced-tag1/src/common/stores/mobx-store.ts create mode 100644 react-advanced-tag1/src/pages/MobXPage.tsx diff --git a/react-advanced-tag1/.prettierrc.mjs b/react-advanced-tag1/.prettierrc.mjs index 202bd46..0bc4faf 100644 --- a/react-advanced-tag1/.prettierrc.mjs +++ b/react-advanced-tag1/.prettierrc.mjs @@ -3,10 +3,10 @@ * @type {import("prettier").Config} */ const config = { - trailingComma: "es5", + trailingComma: 'es5', tabWidth: 2, - semi: false, + semi: true, singleQuote: true, -}; +} -export default config; \ No newline at end of file +export default config diff --git a/react-advanced-tag1/package-lock.json b/react-advanced-tag1/package-lock.json index 658bdbf..4041e66 100644 --- a/react-advanced-tag1/package-lock.json +++ b/react-advanced-tag1/package-lock.json @@ -9,6 +9,8 @@ "version": "0.0.0", "dependencies": { "immer": "^10.1.1", + "mobx": "^6.13.7", + "mobx-react-lite": "^4.1.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.5.0", @@ -3949,6 +3951,41 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/mobx": { + "version": "6.13.7", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mobx/-/mobx-6.13.7.tgz", + "integrity": "sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, + "node_modules/mobx-react-lite": { + "version": "4.1.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz", + "integrity": "sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + }, + "peerDependencies": { + "mobx": "^6.9.0", + "react": "^16.8.0 || ^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, "node_modules/mri": { "version": "1.2.0", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/mri/-/mri-1.2.0.tgz", @@ -5650,6 +5687,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/vite": { "version": "6.2.5", "resolved": "https://bin.sbb.ch/artifactory/api/npm/npm/vite/-/vite-6.2.5.tgz", diff --git a/react-advanced-tag1/package.json b/react-advanced-tag1/package.json index 0d6734a..e3b9047 100644 --- a/react-advanced-tag1/package.json +++ b/react-advanced-tag1/package.json @@ -18,6 +18,8 @@ }, "dependencies": { "immer": "^10.1.1", + "mobx": "^6.13.7", + "mobx-react-lite": "^4.1.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-router-dom": "^7.5.0", diff --git a/react-advanced-tag1/src/App.tsx b/react-advanced-tag1/src/App.tsx index b23f5b7..ddc1101 100644 --- a/react-advanced-tag1/src/App.tsx +++ b/react-advanced-tag1/src/App.tsx @@ -12,6 +12,7 @@ import ZustandCounterPage from './pages/ZustandCounterPage' import ModalPage from './pages/ModalPage' import { HocPage } from './pages/HocPage' import ImmerPage from './pages/ImmerPage' +import MobXPage from './pages/MobXPage' function App() { return ( @@ -27,6 +28,7 @@ function App() { } /> } /> } /> + } /> ) diff --git a/react-advanced-tag1/src/common/components/Header/Navigation.tsx b/react-advanced-tag1/src/common/components/Header/Navigation.tsx index bc17736..301ddca 100644 --- a/react-advanced-tag1/src/common/components/Header/Navigation.tsx +++ b/react-advanced-tag1/src/common/components/Header/Navigation.tsx @@ -1,6 +1,8 @@ +import './Navigation.css' + export default function Navigation() { return ( -