【发布时间】:2020-09-28 05:30:54
【问题描述】:
React memo 没有捕获 prevProps 和 nextProps 的道具,并且组件渲染良好。反应文档说
- 如果您的函数组件在给定相同的 props 的情况下呈现相同的结果,您可以将其包装在对 React.memo 的调用中以提高性能。
我的问题是使用 react memo 停止两次渲染,但 memo 似乎无法正常工作,并且组件使用相同的 props 渲染了两次。
当Create New Event被点击/events时组件渲染
位于
/components/Event/CreateEvent/CreateEvent.js的子组件父组件位于
/Pages/Event/Event.js行号999',子组件从这里被触发
代码如下:
import React from "react";
import AuthContext from "../../context/global-context";
import CreateEvent from "../../components/Event/CreateEvent/CreateEvent";
function Events({ location }) {
// Sate Managing
const [allEvents, setAllEvents] = React.useState([]);
const [creating, setCreating] = React.useState(false);
// Context As State
const { token, email } = React.useContext(AuthContext);
// Creating Event Showing
const modelBoxHandler = () => {
// works on when the ViewEvent is open
if (eventSelected) {
setEventSelected(null);
return;
}
setCreating(!creating);
};
return (
<div className="events">
{/* New Event Creating */}
{creating && (
<CreateEvent onHidder={modelBoxHandler} allEvents={allEvents} />
)}
{console.log("Event Rendered.js =>")}
</div>
);
}
export default React.memo(Events, () => true);
Rect 备忘录没有 props 的子组件:
import React from "react";
import AuthContext from "../../../context/global-context";
function CreateEvent({ onHidder, allEvents }) {
// Context
const { token } = React.useContext(AuthContext);
console.log("CreatedEvent.js REnder");
return (
... Some code here
);
}
export default React.memo(CreateEvent, (prevProps, nextProps) => {
console.log("Hello", prevProps, nextProps);
});
提前感谢您宝贵的回答和时间!
【问题讨论】:
标签: javascript reactjs react-hooks