From 15408649d02851b47be9721a531473273415247f Mon Sep 17 00:00:00 2001 From: shixiaohua Date: Sun, 4 Feb 2024 18:11:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Note/Hlexical/index.jsx | 9 ++++++--- src/pages/Note/index.jsx | 6 +++--- src/redux/store.js | 8 -------- src/redux/tableBarItem_reducer.js | 31 ++++++++++++++++++++++++++++--- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/pages/Note/Hlexical/index.jsx b/src/pages/Note/Hlexical/index.jsx index 51e4f05..7a24ec1 100644 --- a/src/pages/Note/Hlexical/index.jsx +++ b/src/pages/Note/Hlexical/index.jsx @@ -23,6 +23,8 @@ import {store} from "../../../redux/store"; import {SAVE} from "../../../utils/HotkeyConst"; import md5 from "md5" import {isEmpty} from "../../../utils/ObjectUtils"; +import {useDispatch} from "react-redux"; +import {updatedSavedFile} from "../../../redux/tableBarItem_reducer"; function Placeholder() { return
Enter some rich text...
; @@ -87,6 +89,7 @@ export default function Hlexical(props) { console.log("this.props.filePath:", props.filePath) const [editorState, setEditorState] = useState(""); const [lastId ,setLastId]= useState(""); + const dispstch = useDispatch(); function onChange(editorState) { // Call toJSON on the EditorState object, which produces a serialization safe string const editorStateJSON = editorState.toJSON(); @@ -111,9 +114,9 @@ export default function Hlexical(props) { if (!result.canceled){ const editorStateSave = {"editorState": JSON.parse(props.editorState)}; let resultSave = JSON.stringify(editorStateSave); - overWriteFile(result.filePath, resultSave) + overWriteFile(result.filePath, resultSave) // 修改当前文件名 - + dispstch(updatedSavedFile({filePath:result.filePath})) } }) return @@ -137,7 +140,7 @@ export default function Hlexical(props) { }); console.log("return unsubscribe();") return ()=>unsubscribe(); - },[props]) + },[]) } diff --git a/src/pages/Note/index.jsx b/src/pages/Note/index.jsx index abf27c7..3ab2b4c 100644 --- a/src/pages/Note/index.jsx +++ b/src/pages/Note/index.jsx @@ -9,7 +9,7 @@ import './index.less' import {store} from "../../redux/store"; import {isEmpty} from "../../utils/ObjectUtils"; import {useSelector, useDispatch} from "react-redux"; -import {addTableBarItem, removeTableBarItem, setActiveKey} from "../../redux/tableBarItem_reducer" +import {addTableBarItem, removeTableBarItem, setActiveKey,updatedSavedFile} from "../../redux/tableBarItem_reducer" const {Header, Sider, Content} = Layout; const Note = () => { @@ -40,11 +40,11 @@ const Note = () => { dispatch(addTableBarItem( { label: 'New Tab', - children: "", + // children: "", key: newActiveKey, + activeKey:newActiveKey } )); - dispatch(setActiveKey({"activeKey":newActiveKey})); }; const remove = (targetKey) => { console.log("remove = (targetKey):",targetKey) diff --git a/src/redux/store.js b/src/redux/store.js index 21b0b0d..40b1720 100644 --- a/src/redux/store.js +++ b/src/redux/store.js @@ -1,21 +1,15 @@ import {configureStore} from '@reduxjs/toolkit' import historyReducer from './historyRecord_reducer' -import redirectReducer from './redirectUrl_reducer' import dirMessageReducer from './dirMessage_reducer' import pushHotkeysReducer from "./pushHotkeys_reducer"; import tableBarItemReducer from "./tableBarItem_reducer"; import {electronStorage} from "../utils/LocalStorage"; import { persistStore, persistReducer } from 'redux-persist' -import {FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE} from "redux-persist/es/constants"; // 持久化配置 const historyRecordPersistConfig = { key: 'historyRecord', storage: electronStorage() } -const redirectUrlPersistConfig = { - key: 'redirectUrl', - storage: electronStorage() -} const dirMessagePersistConfig = { key: 'dirMessage', storage: electronStorage() @@ -31,7 +25,6 @@ const tableBarItemPersistConfig = { const historyRecordPersistedReducer = persistReducer(historyRecordPersistConfig, historyReducer) -const redirectUrlPersistedReducer = persistReducer(redirectUrlPersistConfig, redirectReducer) const dirMessagePersistedReducer = persistReducer(dirMessagePersistConfig, dirMessageReducer) const pushHotkeysPersistedReducer = persistReducer(pushHotkeysPersistConfig, pushHotkeysReducer) const tableBarItemPersistedReducer = persistReducer(tableBarItemPersistConfig, tableBarItemReducer) @@ -39,7 +32,6 @@ const tableBarItemPersistedReducer = persistReducer(tableBarItemPersistConfig, t export const store = configureStore({ reducer: { historyRecord:historyRecordPersistedReducer, - redirectUrl:redirectUrlPersistedReducer, dirMessage:dirMessagePersistedReducer, pushHotkeys:pushHotkeysPersistedReducer, tableBarItem:tableBarItemPersistedReducer, diff --git a/src/redux/tableBarItem_reducer.js b/src/redux/tableBarItem_reducer.js index 74de520..99b55be 100644 --- a/src/redux/tableBarItem_reducer.js +++ b/src/redux/tableBarItem_reducer.js @@ -1,6 +1,14 @@ import { createSlice } from '@reduxjs/toolkit' import {isEmpty} from "../utils/ObjectUtils"; +/** + * { + * label: e.node.title, + * children: e.node.key, + * key: e.node.key, + * activeKey:e.node.key + * } + */ export const tableBarItemSlice = createSlice({ name: 'tableBarItem', initialState: { @@ -24,17 +32,34 @@ export const tableBarItemSlice = createSlice({ if (action.payload.activeKey){ state.activeKey=action.payload.activeKey } - } - , + }, setActiveKey: (state, action) => { console.log("tableBarItemSlice:setActiveKey",action.payload) if (action.payload.activeKey){ state.activeKey=action.payload.activeKey } + }, + updatedSavedFile:(state, action)=>{ + console.log("tableBarItemSlice:updatedSavedFile",action.payload) + // 如果其中包含了相同的key,则是文件覆盖。 + if (state.data.filter(file=>file.key===action.payload.filePath).length>0){ + state.data= state.data.filter(file=>file.key!==action.payload.filePath) + } + state.data.forEach(file=>{ + if (file.key===state.activeKey){ + file.children=action.payload.filePath; + file.key = action.payload.filePath; + let split = action.payload.filePath.split("/"); + console.log("action.payload.filePath.split()",split) + file.label =split[split.length-1] + } + }) + state.activeKey = action.payload.filePath } } }) export const { addTableBarItem, removeTableBarItem, - setActiveKey } = tableBarItemSlice.actions + setActiveKey, + updatedSavedFile} = tableBarItemSlice.actions export default tableBarItemSlice.reducer