Web_Design 板


LINE

范例如下: https://stackblitz.com/edit/react-gv3phw?file=index.js 两个DIV区块,当滑鼠移入的时候显示该区块的文字, 滑鼠移出的时候隐藏该区块的文字 可是实际做的时候发现 当单一区块移入移出都没有问题 可是从左区块移入右区块 却发现文字怎麽都显示 正常应该页面上只会有一个显示 於是下了个console.log看结果发现 原本预期的步骤是 enter render leave render enter render leave render 但是跑出来是 enter render leave enter render leave render 没错~中间少了个render造成结果不正确 但一直想不到是为什麽? 我在onMouseEnter跟onMouseLeave都有下setState 为何从区块移到另一个区块时 却没有发生render? --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.70.222.22 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Web_Design/M.1572278815.A.5AC.html
1F:→ Hevak: 因为 setState 不是同步的,而且会 batch 在一起 10/29 00:43
2F:→ Hevak: ^文件: https://bit.ly/2NmOrBx 10/29 00:43
4F:→ Hevak: 照文件修好之後像上面这样,应该是你要的结果,参考看看 10/29 00:48
5F:→ Hevak: 如果你的 setState 会依赖於上一个 state,那就应该改用 10/29 00:48
6F:→ Hevak: this.setState((state,props) => newState) 这种形式去写 10/29 00:49
7F:→ Hevak: 才可以正常运算,不然会遇到很多先後顺序和 batch 的问题 10/29 00:49
8F:→ Hevak: 依赖於上一个 state: 比方说你先取用了 this.state 然後再 10/29 00:49
9F:→ Hevak: 运算再把运算结果丢去 this.setState({}) 10/29 00:50
10F:→ Hevak: 这种写法就会有问题 10/29 00:50
11F:→ Hevak: 取用上一个 state, props 的东西都应该写在 this.setState( 10/29 00:51
12F:→ Hevak: (state, props) => 的这个 function 里面) 10/29 00:51
谢谢大大~再请问一个问题 当我从左区块移入右区块的时候 到底是左区块的onMouseLeave先触发还是右区块的onMouseEnter先触发 因为仔细想了一下顺序 (左区块移入→移到右区块→移出右区块) f f (初始) f f (初始) t f (左 mouseEnter) t f (左 mouseEnter) f f (左 mouseLeave) ★ t t (右 mouseEnter) f t (右 mouseEnter) f t (左 mouseLeave) f f (右 mouseLeave) f f (右 mouseLeave) 因为★处好像会影响state不同的状态(虽然最後结果一样) 然後发现最早问题里的render状态 mouseEnter跟mouseLeave会有一处没render的那个部分 恰好是这个瞬间 那不就好在没render,所以最後结果是相同 还是说那个瞬间因为是非同步执行,所以是同时发生的 ※ 编辑: ctah (122.116.84.179 台湾), 10/29/2019 09:36:00 ※ 编辑: ctah (122.116.84.179 台湾), 10/29/2019 09:41:57
13F:→ y3k: 用hook会比较稳 https://stackblitz.com/edit/react-v6f1aa 10/29 12:27
14F:→ Hevak: 那个顺序其实不太重要,面对确定会有非同步的情形(例如set 10/30 05:36
15F:→ Hevak: State)的设计的重点是使用不管顺序怎样都没差的写法 10/30 05:36







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP