useEffect 如何监控 useRef.current 里面的值发生变化(useRef不绑定dom)?
function handleWheel(e: TKWheelEvent) { if (e.evt.ctrlKey) return e.evt.preventDefault() const direction = e.evt.deltaY > 0 ? -1 : 1 const stage = e.target.getStage()! const oldScale = stage.scaleX() const pointer = stage.getPointerPosition()! const mousePointTo = { x: pointer.x / oldScale - stage.x() / oldScale, y: pointer.y / oldScale - stage.y() / oldScale, } const { MaxScale, MinScale } = ScaleRef.current const newScale = direction > 0 ? oldScale > MaxScale ? oldScale : oldScale * ScaleBy : oldScale < MinScale ? oldScale : oldScale / ScaleBy stage.scale({ x: newScale, y: newScale }) ScaleRef.current = { // 这里发生了改变! ...ScaleRef.current, newScale, } } useEffect(() => { console.log(ScaleRef.current.newScale) }, [ScaleRef.current]) // 这样不打印 }, [ScaleRef]) // 这样不打印 }, [ScaleRef.current.newScale]) // 这样不打印
<ScStage ref={stageRef} onWheel={handleWheel} />
其实我是想让 ScaleRef.current.newScale
发生变化的时候传给子组件,让子组件重新渲染,但是发现ScaleRef.current.newScale
这玩意监听不到它的变化
如果想监听变化的,还是用useState()
吧
两个误区吧:
解决思路:在更新 ScaleRef.current 的地方,直接写 useEffect 里的逻辑即可(有全量代码的话,视情况而定)。
ap.onNetworkChange(CALLBACK) 监听网络环境发生变化的事件。 CALLBACK 参数说明 和ap.getNetworkType()返回值一致 名称 类型 描述 networkAvailable Boolean 网络是否可用 networkType String 网络类型值 UNKNOWN / NOTREACHABLE / WIFI / 3G / 2G / 4G / WWA
如何监听data里面的所有age的长度是否为0,所有age的长度为0则返回true,否则返回false
本文向大家介绍React中如何监听state的变化?相关面试题,主要包含被问及React中如何监听state的变化?时的应答技巧和注意事项,需要的朋友参考一下 16.x 之前使用componentWillReveiveProps componentWillReceiveProps (nextProps){ if(this.props.visible !== nextProps.visible){
我有一个文件 这个类是一个独立的文件, 这个类被多个其他文件所引用 如何提前hack这个类 让他每次实例化的时候回调给我, 让我知道他实例化了从而运行一些实例化的代码
本文向大家介绍node.js 如何监视文件变化,包括了node.js 如何监视文件变化的使用技巧和注意事项,需要的朋友参考一下 fs.FSWatcher fs.FSWatcher类 继承了 EventEmitter,用于监视文件变化,调用 fs.watch 后返回一个 fs.FSWatcher 实例,每当指定监视的文件被修改时,实例会触发事件调用回调函数 fs.watch() fs.watch(f
vue(js)如何监听一个json对象是否发生了改变? 判断条件: 1、只比较初值和最终值,如改动后再改回去则相当于未改变 2、忽略key的顺序,如{"a":1,"b":2},{"b":2,"a":1} 相当于未发生改变