twinkle

Results 34 comments of twinkle

@CoderSerio 在React中使用防抖(debounce)函数时,可能会遇到一个常见的问题:组件的props或state更新导致组件重新渲染,而这些更新可能会导致传递给防抖函数的回调函数(fn)发生变化。如果防抖函数直接使用了这个回调函数,那么它可能会在某些时刻使用的是一个"旧"的回调版本,这可能会导致一些意外的副作用,尤其是当这个回调函数依赖于当前的props或state时。 useLatest 用来确保在使用函数时总是能够获取到该函数的最新版本。它内部通常是通过使用useRef来实现的,useRef会在整个组件的生命周期内保持引用值的不变,即使组件重新渲染。useLatest通过更新这个引用的当前值来确保无论何时调用,都是使用的最新传递给它的函数。 useDebounceFn Hook创建了一个防抖函数debounced,并使用useMemo确保这个防抖函数不会在每次渲染时都被重新创建。如果不使用useLatest,那么当fn变化时,由于useMemo依赖数组为空,debounced内部使用的将是旧的fn,不会因为fn的更新而更新。 使用useLatest的目的是确保在防抖函数实际执行的时刻,无论它是立即执行还是延迟执行,使用的都是最新的fn回调函数。这在如下情况下尤其重要: - 回调依赖外部状态:如果fn回调函数依赖于组件的state或props,那么确保使用最新的fn是非常重要的,这样才能确保回调执行时能够获取到最新的状态。 - 防抖时间较长:如果设置了较长的防抖时间,那么在防抖函数实际执行前可能已经进行了多次操作,导致fn多次更新。使用useLatest可以确保无论防抖函数何时执行,都是使用最新的回调。 - 函数组件快速重新渲染:在React函数组件中,组件的快速重新渲染可能会导致传递给防抖函数的回调频繁变化。如果不使用useLatest,那么防抖函数可能会捕获到一个过时的回调函数版本,导致执行的逻辑不是最新的。 长话短说,useLatest的使用是为了在React组件中使用防抖(或节流)函数时,确保无论何时函数执行,都能够访问到最新的回调函数,以避免因为闭包导致的陈旧数据问题。

> 看起来你使用了这个commit之前的配置文件 [bdef4a1](https://github.com/xaoxuu/hexo-theme-stellar/commit/bdef4a11ba567b1e80fe6baaec6a083c1d28188e) 太对了果然是这样,解决了感谢大佬。 我还有一个疑惑,单独访问评论的时候有上方的邮箱选项,但是在博客中却没有。我翻遍了文档和配置文件中也没找到是在哪里配置的。

> 因为你已经登录了,你可以点头像旁边的❌退出之后刷新看看,或者用另外的浏览器访问一下 抱歉再次打扰。我还有最后一个问题,代码托管到`Github`后,无论我将站点部署到`Vercel`还是 CF,都只能使用默认自带的域名才能显示评论框,而访问自定义域名还是 loading。 我初步以为是`_config.yml`中`url`值没有配置正确的原因,但始终通过访问自定义域名的时候就是一直转圈。 ``` url: https://resetsix.cn ``` 站点配置的自定义域名也是同上。DNS 解析应该也是正确的,不然网站应该都访问不了。 --- 通过网络我发现访问默认域名的时候会请求 `waline.js`和 `waline.css`,但是自定义域名只有 `waline.js`的请求

默认域名 (有评论) ``` https://041ea7bd.kudoshinichix.pages.dev/1970/01/01/hello-world/ ``` 自定义域名 (loading) ``` https://resetsix.cn/1970/01/01/hello-world/ ```

> 你需要看一下waline的日志,在使用cn域名访问的时候出现了什么错误。另外可以发一下你的waline配置帮助判断。 代码托管:Github 站点部署:Vercel或Cloudflare 问题描述:生产环境通过自定义域名访问时(cn域名)无法加载出waline组件,默认域名正常。本地启动访问也正常。 因为我没有其他的域名,所以无法测试其他域名的情况。 能加载出评论框的站点(默认域名) https://blog-ruby-pi-11.vercel.app/hello-world/ 一直loading转圈无法加载出评论框的站点(cn域名) https://www.resetsix.cn www替换成blog也行,但效果始终都是 loading。 评论服务(正常) ``` https://comment.resetsix.cn/ ``` 提示:开了代理,也尝试清除过浏览器缓存。Chrome、Firefox也都用过。 配置如下 ```yml comments: service: waline # beaudar, utterances, giscus, twikoo, waline, artalk comment_title:...

> runtime logs 默认域名时的请求 自定义域名就是不请求 comment 接口,反而去请求一个什么 rum 文件没见过 ``` https://resetsix.cn/cdn-cgi/rum ``` 为啥会报 405 呢我丢,服务器禁止了使用当前HTTP 方法的请求

> comment.resetsix.cn似乎是解析到了cloudflare ip。 > > 这个问题我目前没有思路,建议你删除所有的waline服务、域名解析和绑定记录,严格按照waline的文档重新部署并绑定域名,不需要在不同平台做尝试,vercel能跑通就说明配置没有问题。 虽然cn域名我在国内买的,但我把dns解析迁移到cf上的。所以waline自定义域名服务也是在cf上做的解析,但无论comment我是否只通过cf做dns解析代理加上也都这样。可能就是域名解析放在cf上的锅吧。 十分感谢回复,辛苦了。

> 我也碰到和楼主一样的问题了,官方文档是过时了吗? 应该是文档没及时更新吧,有些 api 还停留在 v1