Skip to content

Commit

Permalink
111
Browse files Browse the repository at this point in the history
  • Loading branch information
_Wh0ami committed Sep 7, 2024
1 parent a70c3e5 commit b8fb45c
Show file tree
Hide file tree
Showing 5 changed files with 170 additions and 30 deletions.
13 changes: 7 additions & 6 deletions _posts/.obsidian/workspace.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"state": {
"type": "markdown",
"state": {
"file": "2024-09-02-ReactRouter入门.md",
"file": "2024-09-06-Mobx入门.md",
"mode": "source",
"source": false
}
Expand All @@ -34,7 +34,7 @@
"state": {
"type": "outline",
"state": {
"file": "2024-09-02-ReactRouter入门.md"
"file": "2024-09-06-Mobx入门.md"
}
},
"group": "1b22c265a383bca9"
Expand Down Expand Up @@ -106,7 +106,7 @@
"state": {
"type": "backlink",
"state": {
"file": "2024-09-02-ReactRouter入门.md",
"file": "2024-09-06-Mobx入门.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
Expand All @@ -123,7 +123,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "2024-09-02-ReactRouter入门.md",
"file": "2024-09-06-Mobx入门.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
Expand Down Expand Up @@ -158,7 +158,7 @@
"state": {
"type": "outline",
"state": {
"file": "2024-09-02-ReactRouter入门.md"
"file": "2024-09-06-Mobx入门.md"
}
}
}
Expand All @@ -181,10 +181,11 @@
},
"active": "16fd9a922a86e258",
"lastOpenFiles": [
"2024-08-26-React入门.md",
"2024-08-30-React最佳实践.md",
"2023-11-29-Windows定制.md",
"2024-09-02-ReactRouter入门.md",
"2024-09-04-组件的设计与封装.md",
"2024-08-26-React入门.md",
"2024-09-02-React开发总结.md",
"[React.md",
"2024-08-30-Vue最佳实践.md",
Expand Down
40 changes: 21 additions & 19 deletions _posts/2023-11-29-Windows定制.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,34 @@ catalog: true
tags:
- Windows
---
# 1. 暂停更新

# 1. 系统激活

[开源激活脚本](https://github.com/massgravel/Microsoft-Activation-Scripts)
# 2. 暂停更新

打开 cmd ,输入以下内容,暂停更新3000天:

```
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 3000 /f
```
# 3. 关闭 defender

# 2. 取消搜索框的信息推送
使用dControl工具
# 4. 取消搜索框的信息推送

```
reg add "HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\explorer" /v DisableSearchBoxSuggestions /t reg_dword /d 1 /f
```

# 3. 设置系统全局默认编码为utf-8
# 5. 设置系统全局默认编码为utf-8(谨慎使用)

`Windows设置 --> 时间和语言 --> 语言 --> 右侧管理语言设置 --> 更改系统区域设置 --> 使用Unicode UTF-8`
# 4. 系统默认目录迁移
# 6. 系统默认目录迁移

实现将系统数据与用户数据分开

重装系统时,随意新建一个用户并设置为管理员。进入系统后修改用户目录的配置,然后新建自己的用户名并设置为管理员。重启后最后新建的用户的数据就放在了修改后的目录
## 4.1. 迁移用户目录
## 6.1. 迁移用户目录

- 更改此设置时,不支持 Microsoft Store 应用
- 使用除系统驱动器之外的驱动器:可将用户配置文件文件夹(通常为 `%SYSTEMDRIVE%\Users`)移动到其他位置。 目标路径可以位于系统驱动器以外的卷上,前提是它满足以下要求:
Expand All @@ -41,24 +45,23 @@ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\
```

`ProfilesDirectory`项改为将要迁移的路径,例如`D:\Users`
## 4.2. 迁移桌面
## 6.2. 迁移桌面

迁移文档、视频、下载、图片、音乐、桌面,方式一样

`打开此电脑->找到对应文件-> 右键属性->位置`
# 5. 卸载右下角的资讯和新闻功能
# 7. 卸载右下角的资讯和新闻功能

其实这个功能是和edge浏览器绑定的,可以直接卸载edge浏览器,从而这个功能也会直接卸载

powershell执行`get-appxpackage *edge*` 查找到edge浏览器的安装包名称

`remove-appxpackage + 安装包名称` 卸载

# 6. 安装必要的运行库
# 8. 安装必要的运行库

使用工具 aio-runtimes

# 7. 任务栏透明度
# 9. 任务栏透明度

命名为 `TaskbarAcrylicOpacity.bat`
```bat
Expand All @@ -68,8 +71,7 @@ reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Ad
taskkill /f /im explorer.exe
start explorer.exe
```

# 8. 关闭快速启动
# 10. 关闭快速启动

在Windows 搜索栏输入`[电源和睡眠设置]`,然后点击`[打开]`

Expand All @@ -81,7 +83,7 @@ start explorer.exe

取消勾选`[启用快速启动]`,然后点击`[保存修改]`即可关闭 Windows 中的快速启动功能

# 9. 关闭Microsoft Compatibility Telemetry进程
# 11. 关闭Microsoft Compatibility Telemetry进程

**Microsoft Compatibility Telemetry** 是微软设计的一个官方系统进程,它在后台运行以收集操作系统的性能数据。

Expand All @@ -96,14 +98,14 @@ start explorer.exe
- 现在就可以更改文件的权限。选择CompatTelRunner.exe并授予该文件的“完全控制权”。
- 完成上面的步骤后,就可以直接从计算机中删除 CompatTelRunner.exe 文件了。删除后,重新启动系统以使更改生效。

# 10. 修改环境变量
# 12. 修改环境变量

系统变量:修改后重启才能生效

用户变量:修改后,重启相关应用即可生效

一般建议使用用户变量即可
# 11. 无视任何限制和权限 强制删除文件夹/文件
# 13. 无视任何限制和权限 强制删除文件夹/文件

win键 + R 输入msconfig

Expand All @@ -115,13 +117,13 @@ win键 + R 输入msconfig

最后,删除完成后,再次运行cmd。输入msconfig,将【系统配置】的【引导】中的【安全引导】的勾选掉,再次重新重新启动电脑,即可回到正常模式。

# 12. 关闭文件资源管理器的快速访问
# 14. 关闭文件资源管理器的快速访问

打开文件资源管理器,查看->选项,设置打开文件资源管理器时默认打开`此电脑`,取消勾选`快速访问`

打开 本地组策略(win+r,输入gpedit.msc),选择 用户配置->管理模板->开始菜单-> 不保留最近打开文档的历史

# 13. 解决win10 cmd下运行python弹出windows应用商店
# 15. 解决win10 cmd下运行python弹出windows应用商店

删除微软应用商店的环境变量

Expand Down
5 changes: 4 additions & 1 deletion _posts/2024-08-26-React入门.md
Original file line number Diff line number Diff line change
Expand Up @@ -979,4 +979,7 @@ export default function App(){

# 14. 区分

我们需要区分两个概念,**「DOM 结构」****「React 的层级结构」**。 就像我们需要区分 **「组件渲染」****「DOM 变更」** 是两件事。
我们需要区分两个概念,**「DOM 结构」****「React 的层级结构」**。 就像我们需要区分 **「组件渲染」****「DOM 变更」** 是两件事。

# 15. Hook

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ tags:
[官方文档](https://reactrouter.com/en/main/start/tutorial)
# 1. 创建路由

创建一个路由,将路径和组件做匹配
使用对象,创建一个路由,将路径和组件做匹配

```javascript
// src/Router.js
Expand Down Expand Up @@ -102,7 +102,7 @@ const router = createBrowserRouter([

export default router;
```
# 4. 异常页
# 4. 处理路由不存在异常

定义异常页
```
Expand Down Expand Up @@ -212,12 +212,40 @@ import { Outlet } from "react-router-dom";
# 7. 路由参数

形如 `/users/:userId``/users/123`,怎么把路径中的id参数传递到组件中

# 8. 导航状态

使用`useNavigation` hook,获取导航的状态,包括 `"idle" | "submitting" | "loading"`

可以根据该状态,加载进度条等内容,可以配合React Content Loader 骨架屏使用

# 9. 默认子路由

在配置完路由后,直接访问应用,只会展示全局布局组件,不会展示具体的业务组件

`<Outlet>` 不会返回任何组件,因为没有任何子路由匹配,也就是说`<Outlet>`是根据子路由去返回组件的

```
const router = createBrowserRouter([
{
path: "/",
element: <MainLayout />,
errorElement: <ErrorPage />,
children: [
{ index: true, element: <Query /> },
{
path: "query",
element: <Query />,
},
{
path: "hello",
element: <Hello />,
},
],
},
]);
```
在children中配置`{ index: true, element: <Index /> }`,当访问其父路由时,`<Outlet>` 就会返回`{ index: true, element: <Index /> }`中配置的组件

# 10. JSX Routes

使用JSX的方式创建路由和使用对象的方式创建路由效果是一样的,使用习惯不同而已

106 changes: 106 additions & 0 deletions _posts/2024-09-06-Mobx入门.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
layout: post
catalog: true
tags:
- React
---

# 1. 概念

MobX在应用程序中区分了以下三个概念

1. State
2. Actions
3. Derivations

MobX是一个基于信号的状态管理库
## 1.1. 定义state并标记observable

state通常用来保存视图的状态、待办的事项等

MobX并不关心存储state所使用的数据结构(对象、数组、引用等),只要确保你想随时间改变的所有属性都被标记为可观察的`observable`,这样MobX就可以跟踪它们

state就像保存值的电子表格单元格,使用observable就像把一个对象的属性变成一个电子表格单元格

```
import { makeObservable, observable, action } from "mobx"
class Todo {
id = Math.random()
title = ""
finished = false
constructor(title) {
makeObservable(this, {
title: observable,
finished: observable,
toggle: action
})
this.title = title
}
toggle() {
this.finished = !this.finished
}
}
```
## 1.2. 使用Actions更新状态

Actions是任何一段改变状态的代码,Actions就像用户在电子表格的单元格中输入一个新值。

MobX建议把任何改变可观察对象的代码标记为动作

## 1.3. 创建自动响应状态变化的Derivations

任何可以从state中导出而无需任何进一步交互的东西都是Derivations

Derivations 存在的多种形式
- 用户界面

MobX区分了两种Derivations

- 计算值,它总是可以使用纯函数从当前可观察状态派生出来
- 反应,当状态改变时需要自动发生的副作用(介于命令式编程和响应式编程之间的桥梁)

黄金法则是,如果你希望基于当前状态创建值,则始终使用computed
### 1.3.1. 组件的响应式Derivations

To create a _computed_ value, define a property using a JS getter function `get` and mark it as `computed` with `makeObservable`

```
import { makeObservable, observable, computed } from "mobx"
class TodoList {
todos = []
get unfinishedTodoCount() {
return this.todos.filter(todo => !todo.finished).length
}
constructor(todos) {
makeObservable(this, {
todos: observable,
unfinishedTodoCount: computed
})
this.todos = todos
}
}
```

MobX will ensure that `unfinishedTodoCount` is updated automatically when a todo is added or when one of the `finished` properties is modified.
# 2. 准则

MobX 使用单向数据流,通过Actions改变状态,进而更新所有受影响的视图

```mermaid
flowchart LR
A["Actions"] --> B["Go shopping"]
B["Observable state"]
B ---> n1["Derived values"]
n1 ---> n2["Reactions"]
```

- 当state改变时,所有的Derivations都会自动更新
- 默认情况下,所有Derivations都同步更新
- Computed values 的更新是懒加载的,当没有被使用时,它不会更新
- 所有Computed values 都应该是纯值。它们不应该改变state。


0 comments on commit b8fb45c

Please sign in to comment.