1116起来了,做了23年山东省考卷,69.7/100,才知道只有90道题,慢慢复盘吧。
昨晚上床后看了rust发现果然应该是这边的问题,得手动写些invoke相关的代码。另外了解了js的promise。
1211,结果这rust的问题还没解决,文档也看不懂,cargo是什么。
1228发现我连invoke greet都不行了,开个新项目重新试试。
发现了,网站invoke不行,但软件上invoke行,为什么啊,那不是console用不了吗。
在 Tauri 中,
invoke
方法用于与 Rust 后端进行通信。在开发时,invoke
只能在应用的上下文中(即通过 Tauri 启动的桌面应用)有效工作,而不能在传统的 Web 环境中使用。这是因为invoke
是 Tauri 的一个功能,它依赖于 Tauri 框架的本地后端来执行操作。
受不了啦,path.appLocalDataDir()果然能直接获得,不用写啥rust。先吃饭再看吧。
吃饭的时候在看沙雕动漫,都一个模子,穿越然后没能认出皇帝,但各有各的特色,听能看下去的。
1323找到问题啦,default.json
要允许 "fs:allow-applocaldata-write"
。看到报错没权限就去看文档,然后github搜搜相关代码怎么写。奖励自己上床躺躺。刚还觉得没饱弄了几个牛筋丸,现在也不想吃了。
1350起来,床上好舒服啊,等下再上。
1444,每次处理数据都要loadFromJson才能成功,问了好像和React 状态有关,以为和ts和tsx后续有关,结果好像也不是,所以没有和React渲染有关的类内数据会自己刷新掉吗?得到的答案是否定呢。那为什么我一度能够获取到的数据在后面再次访问时会被重置呢?
2. 将 RecordManager 实例存储在应用级别
如果你希望在整个应用中都能共享
RecordManager
实例,你可以将它存储在 React 的useState
中或者通过外部状态管理工具(如 Context API 或 Redux)来保持对实例的引用。这样,实例不会在每次渲染时被重置。
使用
const [recordManager] =useState(() =>newRecordManager()); // 只创建一次 RecordManager 实例
代替
const recordManager = new RecordManager();
成功了,不用每次load了,怎么会这样呢,react,我真搞不懂你。
在 React 中,
useState
是用来持久化和管理组件的状态的。当你写const recordManager = new RecordManager();
时,每次组件重新渲染时都会重新创建一个新的RecordManager
实例,这意味着你失去了之前的状态,因为 React 会重新执行组件函数。而
useState(() => new RecordManager())
这种写法会在组件的第一次渲染时创建RecordManager
实例,并且保持这个实例直到组件卸载。这样,recordManager
就保持了同一个实例,不会在组件重新渲染时丢失数据。这里的关键是
useState
的惰性初始化特性。useState
接受一个函数(即() => new RecordManager()
),这个函数会在组件首次渲染时执行,并且返回的值会作为该 state 的初始值。因为 React 会记住useState
返回的状态,即使组件重新渲染,也会重用recordManager
实例,而不会重新创建它。为什么这样能避免每次
load
:
- 当你在
useState
中创建recordManager
时,React 会在首次渲染时创建并初始化它,在后续的渲染中不会重新创建。useState
保证了recordManager
实例的持久性,这意味着你在调用loadFromJson()
后,数据会保存在实例中,而不会每次渲染时丢失。- 每次渲染时 React 会保留
recordManager
的状态,即使组件被重新渲染,recordManager
仍然是同一个实例,数据也得以保存。总结
- 使用
useState
时,React 保证了在组件生命周期内,状态是持久的,并且不会丢失。useState(() => new RecordManager())
通过惰性初始化确保RecordManager
只会被创建一次,并且在每次渲染时都使用同一个实例。React 的这种行为可以看作是它对组件状态管理的一种优化,确保我们不必每次都手动管理对象的生命周期。通过理解 React 的渲染机制,你就能更好地控制数据的持久性和状态更新。
解决了就是好事,1453,再去躺躺吧。
1529起来,床上好舒服,来创git仓库了,得记录,看不到之前的代码有时很痛苦。
1539提交了,每次都记不得命令。
在
.gitignore
文件存在之前,某些文件(如大文件、临时文件或敏感信息)可能被错误地添加到 Git 仓库中。如果这些文件已经被提交,即使后来添加了.gitignore
,也无法直接忽略这些文件。
1617,在调UI,唉UI。手累了,躺躺。
1636起来了,写写代码等等吃饭了,唉也不敢躺太久。
key可以重复,感觉和最开始想的有区别,但也行,这样就这样。算了,还是别能重复,不然之前添加也要改。
门口有老太敲门,问了又不讲来干嘛的,直接不理了。
1718写完update,UIbug以后再看。吃饭喵。
1756吃完晚饭,看行测吧,早晨做的卷子现在还没看完。言语是真不理解答案啊。
1818复盘完了,好抽象。没心情看,判断都不是很能接受答案,以后可能要再复盘。
UI抖来抖去找不到原因,今晚怎么度过呢。npm run tauri build
会因为网络原因失败,唉,墙。
发现是 .record-details-modal {position: fixed;
的问题,但是为什么呢。好吧其实是它父组件css的问题。
因为父组件上按钮的效果,子组件也会放大缩小,然后UI移位。
|
|
直接删掉动效了,懒得管原理了,不知道为什么打开子组件后父组件还能有hover效果。
边看别人打屎不拉通就边在想,update与其判断key有没有更改,不如直接把原数组原位置删掉,在最后面添加新的。就得是这个功能吧,后添加的显示在前。
2002了,随便锻炼锻炼洗澡上床吧。明天看看tauri客户端怎么一直置顶。
2100运动完,2109洗好澡,等下晒衣服,今天就这样吧,上床吧,想想明天。