如何在没有任何新状态值的情况下将“ setState”作为回调函数成功更新状态?

mvkdiegnhoiw

我最近看到了此代码段,并且想知道状态变量在这里实际上是如何更新的。这是用于Firebase身份验证的身份验证状态观察器,用于确定用户是否已登录(docs reference)。通常,这是它的功能:

const [userData, setUserData] = useState(null)
firebase.auth().onAuthStateChanged(user => {
  if (user) {
    // User is signed in.
    setUserData(user); // can now access properties of user
  }
});

但是,此代码userData通过setUserData代替函数中的回调以完全相同的方式进行更新

const [userData, setUserData] = useState(null)
firebase.auth().onAuthStateChanged(setUserData);

这两个函数都设置userData为同一对象。在第二个片段中,如何通过不使用有形值来更新状态来更新状态,这是如何工作的?

一些

第二个调用使用在其他地方定义为回调的函数,而第一个调用使用新定义的函数。

请参见下面的示例:

function log(data) {
  console.log(data);
}

function someFunction(callback) {
  setTimeout(()=>{ callback("my data")}, 1000);
}


someFunction( (data)=> console.log(data) ); // use new function
someFunction( log ); // reuse a defined function

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用 setState 的情况下显示 react-redux 状态值?

如何在不改变状态本身的情况下获取状态值并对其进行操作?

如何在Reducer中没有任何ID的情况下将数据添加到redux状态数组?

如何在没有任何动作的情况下使用amp状态获取数据

如何在没有回调函数的情况下使用React Hook状态变量?

reactjs-如何在没有参考的情况下将状态元素传递给孩子?

SetState 回调不等待状态更新

setState 回调不等待状态更新

反应setState回调没有更新的状态

如何在没有Redux形式的情况下通过缩减器和操作更新输入值状态

在没有 setState 的情况下反应状态更新

为什么第一次在父回调函数中没有更新子状态值?

如何在没有使用ngrx store的api调用的情况下更新状态数据?

如何在不发生突变的情况下更新状态数组中的现有值?

为什么反应功能组件中的回调没有读取更新的状态值

boost::python 如何使用函数成员作为 python 回调

在setState回调中ReactJS状态未更新

ReactJS:setState 和回调后状态未更新

解构状态即使在setState回调中也不会更新

我如何在没有参考的情况下复制状态

如何在没有sudo(或root)的情况下检查UFW状态?

如何在没有合并提交或使用CLI的情况下保持GitHub的最新状态?

AudioKit - Midi - 如何在没有事件的情况下确定知道的状态?

如何在没有导航页面的情况下更改状态栏颜色

如何在没有窗口的情况下使用Swift在macOS上检测Caps Lock状态?

如何在没有回调的情况下顺序调用axios函数

如何在 const 模式下更改状态值?

如何在没有减速器的情况下从深度嵌套的子组件更新祖先状态

如何在没有构造函数的情况下使用Typescript在React中正确设置初始状态?