Reactjs React Native:这是正常行为吗

Reactjs React Native:这是正常行为吗,reactjs,rendering,native,Reactjs,Rendering,Native,我不知道这是不是正常的行为。我的意思是,我希望它在app.js文件中只调用一次 因此,我有一个app.js文件,其中有一个console.log,只有一个不带useffect的字符串。如果我使用useffect,它会调用一次,然后console.log会调用两次。这正常吗 另一件事是我有一个上下文文件,我想在其中为用户指定一些关于他的信息 因此我也使用useEffect,如果我在那里放了一个console.log,那么它会调用2到3次: 我希望清楚我的意思是什么 下面是代码: App.js co

我不知道这是不是正常的行为。我的意思是,我希望它在app.js文件中只调用一次

因此,我有一个app.js文件,其中有一个console.log,只有一个不带useffect的字符串。如果我使用useffect,它会调用一次,然后console.log会调用两次。这正常吗

另一件事是我有一个上下文文件,我想在其中为用户指定一些关于他的信息

因此我也使用useEffect,如果我在那里放了一个console.log,那么它会调用2到3次:

我希望清楚我的意思是什么

下面是代码:

App.js

console.log("---App----")

export default function App() {

  console.log("---App in---");

  const [authState, setAuthState] = useState({
    isAuthenticated: false,
    isLoadingComplete: false,
  });

  useEffect(() => {
    on_auth_state_changed((user) => {
      setAuthState({
        ...authState,
        isAuthenticated: !!user,
        isAuthenticationReady: true,
        isLoadingComplete: true,
      })
    });

  }, [])
}
UserContext.js

import React, { useState, createContext, useContext, useEffect } from 'react';

import { FirebaseContext, FirebaseProvider } from './FirebaseContext';

const UserContext = createContext([{}, () => { }])

let count = 0;

const UserProvider = (props) => {

  const firebase = useContext(FirebaseContext);

  const [state, setState] = useState({
    profileImage: 'default',
    posts: 0,
    isLoggedIn: false
  })

  useEffect(() => {
    // async function fetchData() {
    firebase.onAuthStateChanged(async (user) => {
      if (user) {
        try {
          const userInfo = await firebase.getCurrentUserProfile();
          setState({
            ...userInfo,
            isLoggedIn: true
          })

        } catch (error) {
          console.log("@UserContext onAuth", error.message);
        }
      } else {
        setState({
          ...state,
          isLoggedIn: false
        })
      }
    });
    //   }
    //   fetchData();
  }, [])

  console.log("---------@UserContext-----------", count++)

  return <UserContext.Provider value={[state, setState]}>{props.children}</UserContext.Provider>
}

export { UserContext, UserProvider };

签字后:

---App in---
---------@UserContext----------- 2
---------@UserContext----------- 3

注销后:

---App in---
---------@UserContext----------- 4
---------@UserContext----------- 5
---App in---
---------@UserContext----------- 4
---------@UserContext----------- 5