mar*_*rio 6 reactjs react-hooks
我对 useRef 挂钩和组件内的普通变量之间的差异感到困惑。
我是对的吗,每个组件都会渲染,普通变量也会重新渲染并保留其值,但 useRef 只是保留该值并且不会重新渲染?
如果是这样,您会推荐两者之间的什么?
小智 18
这是一个用于模拟的沙箱!
假设
let a = 0;
const ref = useRef(0);
const [state,setState] = useState(0);
Run Code Online (Sandbox Code Playgroud)
现在假设您使用 2 个具有这些点击功能的按钮
const firstClick = () => {
a = 2;
ref.current = 2;
}
const secondClick = () => {
setState(2);
}
Run Code Online (Sandbox Code Playgroud)
第一次单击将修改引用和变量。
第二次单击将由于状态更改而导致重新渲染。
但是,如果您在 div 或文本中同时打印 ref 和变量,那么您将看到只有 ref 仍然保留其值,因为 React 函数在其变量上形成了闭包。
无论何时您需要操纵 Dom 或存储状态而不需要在更改时重新渲染,ref 都是您的首选。如果你正在进行逻辑计算,那么就选择变量
Sha*_*hed 12
使用声明的变量useRef不会包含在反应生命周期中,这意味着如果任何状态更新使用定义的值都useRef不会改变,这就是优点。而没有使用声明的变量useRef会在组件重新渲染时重新声明。
还有一种替代方法可以解决这个问题,因为这会污染全局空间,可能会导致意想不到的事情。该方法是在组件外部声明变量。
| 归档时间: |
|
| 查看次数: |
4527 次 |
| 最近记录: |