学习网站建设的书籍,网站名字怎样做版权,x网站免费模板免费下载,苏州网站设计函数组件有函数作用域#xff0c;每次render时#xff0c;声明的方法会生成新的引用#xff0c;声明的普通变量会重新声明并赋值初始值#xff0c;而useRef和useState会保留状态。
useState、useRef、变量的区别 1. useState 组件更新不会改变之前的状态#xff0c;可以保…函数组件有函数作用域每次render时声明的方法会生成新的引用声明的普通变量会重新声明并赋值初始值而useRef和useState会保留状态。
useState、useRef、变量的区别 1. useState 组件更新不会改变之前的状态可以保存状态。值变化会render视图会更新setState是异步的同一个函数内设置的不能实时获取到最新的值。
const [state, setState] useState(0)
const fn () {setState(1)console.log(state) //输出0
} 使用场景 当我们需要在状态改变的时候重新渲染视图那么我们就使用 useState 来保存我们的状态
2. useRef保存的值 组件更新不会改变之前的状态可以保存状态。值变化不会render视图不会更新。设置的值是同步的同一个函数内设置的能实时获取到最新的值。
const num useRef(0)
const fn () {num.current 1console.log(num.current) //输出1
}使用场景 如果我们只是想保存状态不影响视图更新而且可以同步更新获取我们的状态那么就使用 useRef。 注意事项
ref.current 不可以作为其他 hooksuseMemo, useCallback, useEffect依赖项 ref.current 的值发生变更并不会造成 re-render, Reactjs 并不会跟踪 ref.current 的变化。 3. 变量组件内 变量在每次组件重新渲染的时候都会被重新进行赋值为初始值所以如果你想要保留之前操作的状态的话就不要使用变量。 使用场景 建议组件内不使用
3. 变量组件外 组件外定义的 global 变量是属于全局的。如果代码中有多个相同的组件那这个 global 变量在全局是同一个他们会互相影响。 参考react中useState、useRef、变量之间的区别_useref和usestate区别-CSDN博客