Javascript 缩小反应误差#301 |无限循环|重新渲染 import React,{createContext,useState}来自“React”; export const UserContext=createContext(); export const UserProvider=props=>{ const[user,setUser]=useState({ 记录:false, 用户信息:{ } }) if(localStorage.getItem('data')) { setUser({logged:true,User_info:JSON.parse(localStorage.getItem('data'))}) console.log(user.user\u信息) } 返回( {props.children} ) }
我的组件正在无限循环中重新渲染,react限制了重新渲染及其抛出错误Javascript 缩小反应误差#301 |无限循环|重新渲染 import React,{createContext,useState}来自“React”; export const UserContext=createContext(); export const UserProvider=props=>{ const[user,setUser]=useState({ 记录:false, 用户信息:{ } }) if(localStorage.getItem('data')) { setUser({logged:true,User_info:JSON.parse(localStorage.getItem('data'))}) console.log(user.user\u信息) } 返回( {props.children} ) },javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我的组件正在无限循环中重新渲染,react限制了重新渲染及其抛出错误 有人能帮忙吗???我可能会把这句话改成: import React,{createContext,useState} from 'react'; export const UserContext = createContext(); export const UserProvider = props =>{ const [ user,setUser ] = useState({ logged:
有人能帮忙吗???我可能会把这句话改成:
import React,{createContext,useState} from 'react';
export const UserContext = createContext();
export const UserProvider = props =>{
const [ user,setUser ] = useState({
logged: false,
User_info: {
}
})
if(localStorage.getItem('data'))
{
setUser({logged:true,User_info:JSON.parse(localStorage.getItem('data'))})
console.log(user.User_info)
}
return(
<UserContext.Provider value={[ user,setUser ] }>
{ props.children }
</UserContext.Provider>
)
}
更新:
调用setState()
时,将重新渲染组件。您的原始代码正在运行setState(),始终导致无限渲染:
- 第一次渲染
- 调用setState(),以便新的重新渲染将排队
- 再次渲染,调用setState,排队重新渲染
- 再次渲染,调用setState,排队重新渲染
- 再次渲染,调用setState,排队重新渲染
-if(localStorage.getItem('data'))
+if(!user.logged && localStorage.getItem('data'))