在React中,当子组件触发状态更改并传递给父组件时,父组件会重新呈现。如果我们希望在子组件触发状态更改时防止父组件重新呈现,可以采取以下几种方法:
import React, { memo } from 'react';
const ParentComponent = () => {
// 父组件的状态和状态更新函数
const [parentState, setParentState] = useState('');
// 子组件的状态更新函数
const handleChildStateChange = (newState) => {
setParentState(newState);
};
return (
<div>
<ChildComponent onStateChange={handleChildStateChange} />
</div>
);
};
const ChildComponent = memo(({ onStateChange }) => {
// 子组件的状态和状态更新函数
const [childState, setChildState] = useState('');
const handleButtonClick = () => {
const newState = 'New State';
setChildState(newState);
onStateChange(newState); // 触发父组件状态更新
};
return (
<div>
<button onClick={handleButtonClick}>Change State</button>
</div>
);
});
import React, { useState, useCallback } from 'react';
const ParentComponent = () => {
// 父组件的状态和状态更新函数
const [parentState, setParentState] = useState('');
// 子组件的状态更新函数
const handleChildStateChange = useCallback((newState) => {
setParentState(newState);
}, []);
return (
<div>
<ChildComponent onStateChange={handleChildStateChange} />
</div>
);
};
const ChildComponent = ({ onStateChange }) => {
// 子组件的状态和状态更新函数
const [childState, setChildState] = useState('');
const handleButtonClick = () => {
const newState = 'New State';
setChildState(newState);
onStateChange(newState); // 触发父组件状态更新
};
return (
<div>
<button onClick={handleButtonClick}>Change State</button>
</div>
);
};
这两种方法都可以防止父组件在子组件状态更改时重新呈现。选择使用哪种方法取决于具体情况和项目需求。
领取专属 10元无门槛券
手把手带您无忧上云