V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  sweetcola  ›  全部回复第 5 页 / 共 5 页
回复总数  99
1  2  3  4  5  
2022-01-19 13:06:10 +08:00
回复了 sweetcola 创建的主题 分享发现 好名字 + 好 logo + 靠前的排名比我想得还要重要
@Robertwhite 有道辞典如果我没记错的话是需要加载远程 js 的,这方法在 MV3 里已经不能用了。所以这扩展一旦过了 Chrome MV2 的 Timeline 可能就无法使用了😂。但是扩展里有自定义翻译源的功能,倒是可以自己整一个,虽然会很麻烦。。。
2022-01-18 14:09:09 +08:00
回复了 coolair 创建的主题 Vue.js 关于 VUE 组件自动调整样式问题
已经隐藏了再怎么测量都只会是 0 。不能检测并且没缓存和没预设值的情况下,在自己的组件里解决的话只有一种方法,把 parentElement 的 display 改成 block 。


```
const parentElementDisplay = $0.parentElement.style.display;
$0.parentElement.style.display = 'block';
const { width, height } = $0.getBoundingClientRect();
$0.parentElement.style.display = parentElementDisplay;
```
这是单一父元素被隐藏的情况,如果被隐藏的节点很深的话就对整个树都做这种操作。这种操作可以避免检测到 0 ,但缺点也很明显,要遍历整个树和重渲染造成额外的计算量。
2022-01-11 17:23:44 +08:00
回复了 lazyrm 创建的主题 问与答 近日在使用 edge 调试的时候有疑问
随机出现的,当出现的时候“元素”栏会是空的,一般是切换到其他栏后关闭再开启,不行的话刷新网页再重复上述操作,确实难受。
2021-12-13 09:29:19 +08:00
回复了 jezal 创建的主题 程序员 现在的前端技术栈真的太恶心了!
以前用 jQ 真的“一直”都简洁吗,如果要更新一个 DIV 你是直接 query 它还是在初始化后记录用 var 记录呢。然后随着代码增多,交互增多,记录的越来越多,变量也越来越多,不会觉得很乱吗。更何况还是用的像 var 这种,后面维护起来简直头疼,refactor 都难。综合以上这些点你真的觉得 jQ 更好吗。而且随着 ES 的更新,大多数 jQ 的特性都自带了,使用了 Babel 后更是能让你比较无痛地在旧浏览器使用新特性。然后就是 React 一直推的都是 think like React ,你用 jQ 的思路来做 React 还不如直接用 jQ 。
2021-10-24 10:41:04 +08:00
回复了 WeiShenMe 创建的主题 随想 为什么不大力发展无线传输
无线的能效挺低的。就像无线充电相对于有线充电要浪费多约 1/3 的电(手机)。
2021-10-21 11:52:04 +08:00
回复了 johnkiller 创建的主题 React React+异步任务 的疑问
分析了一下,不太对劲,不应该输出两次。在 codesandbox 里调试一下,确实只输出了一次。你的 React 版本是 18 并且用上了 Strict Mode 吗(我也没用过,不太确定)?
2021-08-19 16:36:34 +08:00
回复了 ciming 创建的主题 Edge edge 浏览器自带的翻译功能真的比不上 chrome
可以试试 Edge 商店里的 Sc 翻译 里的 Google 网页翻译。虽然面对新元素的插入也是一样不能直接翻译,需要手动关闭后再启用,但起码能用。
可以把数据拆分成几个 reducer(slice) 放进 Redux 里,把 state 下沉到子组件。
2021-06-24 21:13:53 +08:00
回复了 yazoox 创建的主题 React 请教一个,有关 react 的 re-render 的性能小问题
> button1 和 button2 的用法,还有区别么?
没有区别。因为一旦渲染你写在外面和 onClick 里面都一样是动态生成的函数。
不过差别也有,就是非匿名函数和匿名函数的区别(也就是没什么区别)。

> 不过,当 handleClick 比较复杂时,应该可以通过 useCallback 提高性能
如果函数不影响重渲染的情况下用不用没有区别,甚至用了还会降低效率(依赖的比较)。因为就算你用了 useCallback,在重渲染的那一刻依然会生成一个函数,只是依赖没有变所以没有替换(以我理解)。

> 跟踪一下,触发了多少次 render ?
在组件里 console.log('Render'); 就可以了。
2021-06-22 17:15:34 +08:00
回复了 buddie 创建的主题 React 一个 React re-render 导致 html5 视频无法播放的问题
这个问题主要是 URL.createObjectURL(video) 这一段。

触发 re-render 后,React 会重新计算所有的值,包括 src={URL.createObjectURL(video)} 这一段。所以每当 re-render 后都会看上去停止了,实际上是因为 src 被重新计算了。

解法可以像你 3L 说的那样,也可以在不改动原来代码的基础上用 useMemo 。

```
const objURL = useMemo(() => {
return video ? URL.createObjectURL(video) : undefined
}, [video])

...

src={objURL}
```
2021-06-22 15:52:21 +08:00
回复了 yazoox 创建的主题 React react-dnd 有没有用得比较好的兄弟,请教一下?
自己实现一个就可以了。

> 现在我希望这个 panel 可以用鼠标拖动到屏幕 /页面中的任何位置
用 position: fixed; 加上 left 和 top 就能解决。

> 只有 header 那个“部分”(红色框)能够响应鼠标的拖动
给 header 绑定 onMouseDown 事件,一旦 mousedown 触发了就开始监听 window.onmousemove 和 window.onmouseup 。在 mousemove 里计算当前位置({ left, top })并返回。监听 window.onmouseup 触发后可视作取消拖动的事件,取消监听 onmousemove 和 onmouseup,发送拖动完毕的信号。
2021-06-18 18:18:11 +08:00
回复了 happyCodings 创建的主题 Vue.js 求大佬们优化一下代码,屎山代码给孩子头皮想破了
叠 buff 的来了(仅供娱乐)

const data =[{"province":"上海市","city":"上海市市辖区","adcode":"310118","district":"青浦区"},
{"province":"江苏","city":"苏州市","adcode":"320506","district":"吴中区"},
{"province":"山西省","city":"阳泉市","adcode":"140302","district":"城区"},
{"province":"上海市","city":"上海市市辖区","adcode":"310101","district":"黄浦区"},
{"province":"河北省","city":"石家庄市","adcode":"130123","district":"正定县"}];

var obj = Object.keys(obj = data.reduce((t, c) => ({ ...t, [c.province]: { ...t[c.province], [c.city]: { ...t[c.province]?.[c.city], [c.district]: c.adcode } } }), {})).map((v) => ({ name: v, children: Object.keys(obj[v]).map((v1) => ({name: v1, children: Object.keys(obj[v][v1]).map((v2) => ({ name: v2, value: obj[v][v1][v2]})) })) }));

console.log(obj);
2021-04-09 11:06:57 +08:00
回复了 xingguang 创建的主题 React 关于 hooks 的问题,也不知道是不是我脑子短路了,想不出来
我看你好像是需要根据 data 变化后执行 post,所以你可以试试这样做。用 useRef 来储存第一次获得的 data,在第二个 useEffect 进行 ref 和 data 是否相等判断。

代码:
const dataRef = useRef();
const handleSetData = (data) => {
setData(data);
dataRef.current = data;
}
useEffect(() => {
const fn = async () => {
const res = await axios.get(xxx);
handleSetData(res);
};
fn();
}, []);
useEffect(() => {
if (dataRef.current === data) { return; }
axios.post(xxx); // 如果 xxx 里涉及到 setData,用 handleSetData 代替
}, [data])
2021-03-23 19:14:31 +08:00
回复了 miloooz 创建的主题 问与答 前端问题求助大佬(react)
你没把 add 函数放进 DependencyList 里,不放进去的话永远调用最开始拿到的 add 函数。
最开始的 add 函数输出的永远是最开始的 progress 。
可以试试清除缓存,昨天我也发现在 edge 上可以看番剧而一直在用的 chrome 却不行。打开 F12 发现只有 chrome 报语法错误。后来就知道了是因为在 edge 上我没有使用过 B 站所以也就没有缓存过,在 chrome 上报错的那个文件是来自缓存的,也就是说 B 站在修复后并没有更改文件名称。我在清除了缓存之后就恢复正常了。
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1025 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 20:30 · PVG 04:30 · LAX 12:30 · JFK 15:30
Developed with CodeLauncher
♥ Do have faith in what you're doing.