mutate(key) 全局的向所有具有相同 key 的 SWR 广播重新验证消息

代码

  1. import useSWR, {mutate} from 'swr';
  2. import {Divider, Avatar, Skeleton, Button} from 'antd';
  3. const KEY = 'api/user'
  4. function fetchUser() {
  5. return fetch(KEY).then(res => (res.json()))
  6. }
  7. const MyAvatar = () => {
  8. const { data, error } = useSWR(KEY, fetchUser);
  9. if (data && !error) {
  10. return (
  11. <Avatar src={data.avatar} />
  12. )
  13. }
  14. return (
  15. <Skeleton.Avatar active shape="circle" />
  16. )
  17. }
  18. const Content = () => {
  19. const {data} = useSWR(KEY, fetchUser);
  20. return (
  21. <h1>
  22. welcome {data && data.name ? data.name : '--'}
  23. </h1>
  24. )
  25. }
  26. export default function IndexPage() {
  27. return (
  28. <div style={{textAlign: 'center'}}>
  29. <div style={{textAlign: 'right', padding: '24px 24px 0 0'}}>
  30. <MyAvatar />
  31. </div>
  32. <Divider />
  33. <Content />
  34. <Button type="primary" onClick={() => mutate(KEY)} >刷新</Button>
  35. </div>
  36. );
  37. }

结果

iShot2021-03-28 01.50.27_3.gif