Reactjs 使用useEffect与onAuthStateChanged检测Firebase用户更改-什么';有什么区别?

Reactjs 使用useEffect与onAuthStateChanged检测Firebase用户更改-什么';有什么区别?,reactjs,firebase,firebase-authentication,react-hooks,use-effect,Reactjs,Firebase,Firebase Authentication,React Hooks,Use Effect,我将firebase NPM包与Next.JS/React/Typescript一起使用。据我所知,有两种方法可以观察用户的变化: useffect(()=>{ //做点什么 },[firebase.auth().currentUser]) 什么的 constOnAuthStateChanged=()=>{ 返回firebase.auth().onAuthStateChanged((用户)=>{ //做点什么 }); }; useffect(()=>{ const unsubscribe=on

我将firebase NPM包与Next.JS/React/Typescript一起使用。据我所知,有两种方法可以观察用户的变化:

useffect(()=>{
//做点什么
},[firebase.auth().currentUser])
什么的

constOnAuthStateChanged=()=>{
返回firebase.auth().onAuthStateChanged((用户)=>{
//做点什么
});
};
useffect(()=>{
const unsubscribe=onAuthStateChanged();
return()=>{
取消订阅();
};
}, [])

这里有什么区别?他们似乎都只是在观察当前用户;一个比另一个更可取吗?

每次currentUser更改时都会运行此选项

useEffect(() => {
  // do something
}, [firebase.auth().currentUser])
这仅在第一次安装组件时运行。您可以创建一个侦听器来处理更改,并在卸载组件时将其删除

useEffect(() => {
  const unsubscribe = onAuthStateChanged();
  return () => {
    unsubscribe();
  };
}, [])

那么,第一个useffect和第二个useffect的监听器是否有效地做了相同的事情,或者我是否误解了监听器/useffect的工作原理?useffect是一个特殊的钩子,它提供给用户在组件渲染后执行操作。firebase.auth()文件。listener与React render无关(除非在listener处理程序中设置State)