ref和全局变量之间的区别是什么



我使用的是位于HelloWorld.js文件中的一个名为HelloWorld的功能组件。假设我想在不再次触发渲染的情况下跟踪鼠标位置。

作为一个初学者,我知道两个选项:

let mousePosition = null;
const HelloWorld = () => {
// ...
mousePosition = aNewPosition;
const handlerReadingPosition = () => {
console.log(mousePosition)
}
}

const HelloWorld = () => {
const mousePositionRef = useRef(null);
// ...
mousePositionRef.current = aNewPosition;
const handlerReadingPosition = () => {
console.log(mousePositionRef.current)
}
}

这两组代码等价吗?如果我在HelloWorld中声明一个变量,它将在每次渲染时被擦除,因此useRef

有没有";规则";在HelloWorld内部而不是之前声明变量?

您可以将ref视为类的实例变量。

当渲染组件的多个实例时,全局方法将中断。

我正在创建一个javascript文件。我想在一个变量中存储一个值,这个变量必须在许多其他函数中使用。

例如:我有一个输入字段。所以最初输入标签是空的。在我的javascript文件中,有一个变量被声明为userName。使用向上键函数,我从每个键笔划的输入字段中获取值,并将其分配给变量。

现在有另一个函数由于其他原因使用了我的名字。现在,由于我的userName是全局声明的,我可以在任何地方使用它。

var userName                                            //This is the global variable
$('#userNameDiv').on('keyup',function(){               //Jquery method
userName = $('#userName').val()                     //The variable is referenced here
let temp_userName = $('#userName').val()            //Local variable as it is defined within a block and has let key word
})
function(){
console.log(userName)                              //Since userName is globally declared it will be console logged.
console.log(temp_userName)                         //will be undefined as it is a local variable
}

相关内容

最新更新