From 988b9300cbd81823e37346559e6bafa57377fbf2 Mon Sep 17 00:00:00 2001
From: Cmen <1176967590@qq.com>
Date: Sun, 16 Jan 2022 20:49:21 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96store?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
package.json | 4 +++-
src/app/index.tsx | 6 ++++++
src/index.tsx | 5 ++++-
src/store/index.ts | 33 +++++++++++++++++++++++++++++++++
src/store/initState.ts | 8 ++++++++
src/store/reducers.ts | 11 +++++++++++
src/store/type.ts | 14 ++++++++++++++
yarn.lock | 14 +++++++++++++-
8 files changed, 92 insertions(+), 3 deletions(-)
create mode 100644 src/app/index.tsx
create mode 100644 src/store/index.ts
create mode 100644 src/store/initState.ts
create mode 100644 src/store/reducers.ts
create mode 100644 src/store/type.ts
diff --git a/package.json b/package.json
index 31a89a0..6799e56 100644
--- a/package.json
+++ b/package.json
@@ -8,10 +8,12 @@
},
"dependencies": {
"antd": "^4.16.13",
+ "immer": "^9.0.7",
"less": "^4.1.2",
"lodash": "^4.17.21",
"react": "^17.0.2",
- "react-dom": "^17.0.2"
+ "react-dom": "^17.0.2",
+ "redux": "^4.1.2"
},
"devDependencies": {
"@amap/amap-jsapi-types": "^0.0.8",
diff --git a/src/app/index.tsx b/src/app/index.tsx
new file mode 100644
index 0000000..4c8521b
--- /dev/null
+++ b/src/app/index.tsx
@@ -0,0 +1,6 @@
+
+const App = () => {
+ return
首页
+}
+
+export default App;
\ No newline at end of file
diff --git a/src/index.tsx b/src/index.tsx
index eabfc5a..dc87461 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,11 +1,14 @@
import React from 'react';
import ReactDOM from 'react-dom';
+import { store, StoreContext } from './store';
import { Editor } from './editor';
import './index.less';
ReactDOM.render(
- ,
+
+
+ ,
document.getElementById('app')
)
\ No newline at end of file
diff --git a/src/store/index.ts b/src/store/index.ts
new file mode 100644
index 0000000..6070603
--- /dev/null
+++ b/src/store/index.ts
@@ -0,0 +1,33 @@
+import { createStore, Store } from "redux";
+import { createContext, Context, useContext } from "react";
+import { reducer, Action } from "./reducers";
+import { IEditorState } from "./type";
+
+type IStore = Store;
+const store: IStore = createStore(reducer);
+
+export { store };
+
+// export class Store {
+// // editorState: IEditorState;
+// // mapState: IMapState;
+
+// constructor() {
+// this.editorState = {};
+// this.mapState = {
+// polygons: [],
+// };
+// }
+
+// addPolygon() {
+// //
+// }
+// }
+
+
+export const StoreContext = createContext(null) as Context;
+
+export const useStore = () => {
+ const store = useContext(StoreContext);
+ return store;
+};
diff --git a/src/store/initState.ts b/src/store/initState.ts
new file mode 100644
index 0000000..5e4737d
--- /dev/null
+++ b/src/store/initState.ts
@@ -0,0 +1,8 @@
+import { IEditorState } from "./type";
+
+
+export const initState: IEditorState = {
+ map: {
+ polygons: []
+ }
+}
\ No newline at end of file
diff --git a/src/store/reducers.ts b/src/store/reducers.ts
new file mode 100644
index 0000000..351fd99
--- /dev/null
+++ b/src/store/reducers.ts
@@ -0,0 +1,11 @@
+import { createStore } from "redux";
+import { initState } from "./initState";
+
+export type Action = {
+ type: string;
+ payload: any;
+}
+
+export function reducer(state = initState, action: Action) {
+ return state;
+}
diff --git a/src/store/type.ts b/src/store/type.ts
new file mode 100644
index 0000000..c2718af
--- /dev/null
+++ b/src/store/type.ts
@@ -0,0 +1,14 @@
+
+
+export interface IPolygon {
+ id: string;
+ name: string;
+}
+
+export interface IMapState {
+ polygons: IPolygon[];
+}
+
+export interface IEditorState {
+ map: IMapState,
+}
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index f089d17..e048141 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -365,7 +365,7 @@
"@babel/plugin-syntax-jsx" "^7.16.7"
"@babel/types" "^7.16.7"
-"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
+"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
version "7.16.7"
resolved "https://registry.npmmirror.com/@babel/runtime/download/@babel/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
@@ -953,6 +953,11 @@ image-size@~0.5.0:
resolved "https://registry.nlark.com/image-size/download/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
+immer@^9.0.7:
+ version "9.0.7"
+ resolved "https://registry.npmmirror.com/immer/download/immer-9.0.7.tgz#b6156bd7db55db7abc73fd2fdadf4e579a701075"
+ integrity sha512-KGllzpbamZDvOIxnmJ0jI840g7Oikx58lBPWV0hUh7dtAyZpFqqrBZdKka5GlTwMTZ1Tjc/bKKW4VSFAt6BqMA==
+
is-core-module@^2.8.0:
version "2.8.1"
resolved "https://registry.npmmirror.com/is-core-module/download/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211"
@@ -1528,6 +1533,13 @@ react@^17.0.2:
loose-envify "^1.1.0"
object-assign "^4.1.1"
+redux@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmmirror.com/redux/download/redux-4.1.2.tgz#140f35426d99bb4729af760afcf79eaaac407104"
+ integrity sha512-SH8PglcebESbd/shgf6mii6EIoRM0zrQyjcuQ+ojmfxjTtE0z9Y8pa62iA/OJ58qjP6j27uyW4kUF4jl/jd6sw==
+ dependencies:
+ "@babel/runtime" "^7.9.2"
+
regenerator-runtime@^0.13.4:
version "0.13.9"
resolved "https://registry.npmmirror.com/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"