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