下面的代码有什么不同:

function MyComponent(){
    const isPersistent = useRef(true)
    // some more code...
}

代码是这样的:

let isPersistent = true
function MyComponent(){
    // some more code...
}

我知道我通常会将useRef放在这些文件中.我从来不会用第二种方式,我只想知道为什么.这两个有什么不同?我知道我可以使用Ref来放置一个HTML元素.但如果不是这样,为什么第二个不是好的做法呢?

推荐答案

第二种方法的值适用于所有MyComponent的实例,而第一种方法的值对于每个MyComponent的实例可以是唯一的.

另外,第二种情况下更改isPersistent可能不会触发重新渲染.[编辑]上一句是错误的,这要归功于 comments 中的kch.useRef也不会触发渲染.

应该注意的是,实际上可能会有您想要使用第二种模式的情况,即拥有一个isPersistent变量,该变量位于类的外部,并且对于该类的所有实例都是有效的"全局的".

Javascript相关问答推荐

使用redux-toolet DelivercThunks刷新访问令牌

React:未调用useState变量在调试器的事件处理程序中不可用

微软Edge Select 间隙鼠标退出问题

我应该在redux reducer中调用其他reducer函数吗?

按下同意按钮与 puppeteer 师

Msgraph用户邀请自定义邮箱模板

仅针对RTK查询中的未经授权的错误取消maxRetries

如何修复我的数据表,以使stateSave正常工作?

使用Nuxt Apollo在Piniastore 中获取产品细节

未加载css colored颜色 ,无法将div设置为可见和不可见

使用插件构建包含chart.js提供程序的Angular 库?

将对象推送到数组会导致复制

无法读取未定义的属性(正在读取合并)-react RTK

更改agGRID/Reaction中的单元格格式

无法使用Redux异步函数读取未定义的useEffect钩子的属性';map';

Promise.race()返回已解析的promise ,而不是第一个被拒绝的promise

TabNavigator和StackNavigator之间的Reaction Native中的导航问题

如何在Reaction中设置缺省值, Select 下拉列表,动态追加剩余值?

在Press Reaction本机和EXPO av上播放单个文件

将Windows XP转换为原始数据以在html前端中显示