yig*_*gal 4 reactjs react-hooks react-usememo
这是我的 React hooks 代码:
function calc_c({a,b}){
//some long calculation that is based on a,b
}
function MyComponent(params){
var a=calc_a(params)
var a=calc_b(params)
var c=React.useMemo(()=>calc_c({a,b},[a,b])
}
Run Code Online (Sandbox Code Playgroud)
我的问题:如何找出哪些参数发生了[a,b]变化并导致了调用calc_c
编辑:我最终使用了 skyboyer 优秀答案的通用版本:
export function useChanged(name,value){
function print_it(){
console.log('changed',name)
}
React.useMemo(print_it,[value])
}
Run Code Online (Sandbox Code Playgroud)
这取决于您是否要求调试目的或者您想在代码中依赖它(例如“如果 A 更改则返回 B,否则返回 C”)
对于这两种情况,都没有简单的方法可以实现。但解决方法会有所不同。
假设您只是想弄清楚为什么要重新计算。然后只需投入无数
useEffect(() => {
console.log("a is changed");
}, [a])
Run Code Online (Sandbox Code Playgroud)
每个依赖项一个。是的,无聊且重复。但最简单的方法是,您实际上不必另外担心。或者看看是否useWhatChaged对您有用(如果依赖项列表中有十几个变量)。
另一件事,如果您想在常规中进行检查(但为什么?)(我的意思是不是为了调试目的而在临时代码中)。然后你可能会使用usePrevious或编写类似的东西。
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |