From 24591cbfd736bc081cb25ac1ebbcad03f28bbd34 Mon Sep 17 00:00:00 2001 From: yetao Date: Thu, 31 Oct 2024 13:45:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8:=20=20(=E9=98=85=E8=AF=BB?= =?UTF-8?q?=E4=BB=A3=E7=A0=81)=EF=BC=9Aindex.ts=E5=A2=9E=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webview/src/view/index.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/webview/src/view/index.ts b/webview/src/view/index.ts index 30e65e5..81ea994 100644 --- a/webview/src/view/index.ts +++ b/webview/src/view/index.ts @@ -1,26 +1,44 @@ - +// 导入 redux 中的 Store 类型 import type { Store } from 'redux'; +// 导入用于在 VSCode 中添加监听器的函数 import { addListener } from '../vscode'; +// 从 actions 模块中导入所有的 action 创建函数 import * as actions from './actions'; +// 导出 reducers 模块中的 reducer 函数 export { reducer } from './reducers'; +// 导出 state 模块中的所有内容 export * from './state'; +// 导出 actions 模块中的所有内容 export { actions }; +/** + * 初始化 Redux 存储并添加一个监听器来处理来自 VSCode 的消息 + * @param store - Redux 存储对象 + */ export function initStore(store: Store) { + // 使用 addListener 函数添加一个监听器,当接收到消息时,会调用回调函数 addListener((msg) => { + // 从消息中提取 navigation 对象 const { navigation } = msg; + // 根据 navigation 对象的 type 属性来判断消息类型,并分派相应的 action switch (navigation.type) { + // 如果消息类型是 'newconfig',则分派 openNewConfig 动作 case 'newconfig': return store.dispatch(actions.openNewConfig()); + // 如果消息类型是 'editconfig',则进一步处理 case 'editconfig': { + // 从 navigation 对象中提取 config 属性 let { config } = navigation; + // 如果 config 是一个数组,并且长度不为 1,则分派 openConfigLocator 动作 if (Array.isArray(config)) { if (config.length !== 1) { return store.dispatch(actions.openConfigLocator(config, config[0].name)); } + // 如果 config 是一个数组,并且长度为 1,则将 config 数组的第一个元素赋值给 config 变量 config = config[0]; } + // 最后,分派 openConfigEditor 动作 return store.dispatch(actions.openConfigEditor(config)); } }