当没有任何东西用于触发重新渲染组件时,我很难弄清楚发生了什么。
Events.js
当我useState()
从Event.js
它呈现一次中删除 时,组件呈现两次,但我需要保留它。当我useEffect()
在 Event 组件内部使用时,会进行第四次渲染。
我只是保留了虚拟数据给你填补空虚并试图删除React.memo
,没有任何react。问题出在Event.js
我相信的组件上。我也在使用 Context API,但第四次渲染太多了。
useEffect 内部App.js
正在从 localStorage 获取一些值,我无法直接访问该值,因为默认情况下该值未定义
沙盒代码在这里:https : //codesandbox.io/s/event-manager-reactjs-nbz8z?Events.js
file =/ src/Pages/Events/ Events.js
该文件位于/Pages/Events/Events.js
示例代码如下
Event.js(子组件)
function Events() {
// Sate Managing
const [allEvents, setAllEvents] = React.useState(null);
console.log('Rendering EventsJs', allEvents);
React.useEffect(() => {
setAllEvents(['apple', 'banana']);
}, []);
return (
<div className="events">
{ console.log('Event Rendered.js =>') }
</div>
)
}
export default React.memo(Events, (prevProps, nextProps) => {
return true;
} );
App.js(父组件)
import { BrowserRouter, Route, Redirect } from 'react-router-dom';
function App() {
const [userId, setUserId] = React.useState(null);
React.useEffect(() => {
setUserId(1);
}, []);
// Login
return (
<BrowserRouter>
<Navigation />
<Route path='/events' component={Events} />
{console.log('App Rendered')}
</BrowserRouter>
);
}
export default App;
错误: