如何更改useState而不重新渲染它,而只是重新渲染它的组件?我之所以需要这样做,是因为我有一些逻辑可以更改Comp1中的useState。如果我要重新渲染Comp1,则必须重新计算其值。但是,如果发生更改,我仍然想重新渲染其组件。
编辑:更大的代码段。
Time.timeScale = 50;
答案 0 :(得分:1)
我回答了你的问题。基本上,您希望能够一次计算一个值,并且仅在内容更改时才对其进行更新。您可以使用useEffect
进行此操作。 useEffect
的第一个参数是您要在安装/更新时发生的功能。当卸载函数(如果有)时,它将返回一个函数以运行。第二个参数是确定useEffect
是否运行的事物。当user
更改值时,我将其运行。希望这足以使您入门。您可以在docs中阅读有关useEffect
的更多信息。
function Comp2(props) {
const { user, setUser } = useContext(UserProvider);
const { state, setState } = useState({ value: '' });
useEffect(() => {
console.log(user);
// perform expensive operation
setValue({ value: 'My expensive operation is now stored' });
return () => {
// Do you have anything that you would put in componentWillUnmount()?
// Put that here
};
}, [user]);
console.log(state.value);
return (
<div>
{user.exists}
</div>
)
}