Hooks

useState

useEffect

useEffect可以直接读取组件内的state,并且默认情况下每次渲染的时候都会执行。(因为也可以跳过它)

清除effect(可选)

清除effect不需要单独写一个清除的程序,userEffect设计了一种方式:如果useEffect返回一个函数, react将会在该函数内执行清除工作

useEffect(() => {
    function handleStatusChange(status) {
      setIsOnline(status.isOnline);
    }
    ChatAPI.subscribeToFriendStatus(props.friend.id, handleStatusChange);
    // Specify how to clean up after this effect:
    return function cleanup() { // 也可以返回一个箭头函数或者给起一个别的名字
      ChatAPI.unsubscribeFromFriendStatus(props.friend.id, handleStatusChange);
    };
  });

跳过 Effect 进行性能优化

effect 在每次渲染后都会执行清理或者执行 effect,这 可能会导致性能问题。在useEffect内置的API中,如果state值在两次渲染中没有任何变化,就可以设置useEffect第二个参数来判断需不需要调用useEffect,以此来达到性能优化的目的。

// 官方案例
useEffect(() => {
  document.title = `You clicked ${count} times`;
}, [count]); // 仅在 count 更改时更新

Hook的两条规则

只在最顶层使用 Hook

不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层调用他们。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 使用React Hooks有什么优势? 什么是hookshook 是一些可以让你在函数组件里面钩入react st...
    Lyan_2ab3阅读 376评论 0 1
  • Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他...
    mora__阅读 646评论 0 0
  • 一、hook概念 Hook是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 st...
    书中自有颜如玉__阅读 857评论 0 1
  • Hooks是 React v16.8 的新特性,可以在不使用类组件的情况下,使用 state 以及其他的React...
    hellomyshadow阅读 13,512评论 0 5
  • Hook是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其...
    _1633_阅读 192评论 0 0