如何更改useState的状态而无需重新呈现组件,而仅重新呈现其组件

时间:2019-09-18 16:06:43

标签: javascript reactjs react-hooks

如何更改useState而不重新渲染它,而只是重新渲染它的组件?我之所以需要这样做,是因为我有一些逻辑可以更改Comp1中的useState。如果我要重新渲染Comp1,则必须重新计算其值。但是,如果发生更改,我仍然想重新渲染其组件。

编辑:更大的代码段。

Time.timeScale = 50;

1 个答案:

答案 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>
  )
}