feedforce / frontend-meeting

Agenda for frontend meeting.
https://github.com/feedforce/frontend-meeting/issues
22 stars 1 forks source link

2019/10/03 第154回 フロントエンドMTG 議事録 #9

Open mashabow opened 5 years ago

mashabow commented 5 years ago

React.lazy を触った

基本の使い方

import React, { lazy, Suspense } from 'react';

const Component = lazy(() => import('./Component'));

const Usage: React.FC = () => (
  <Suspense fallback="Loading...">
    <Component />
  </Suspense>
);

lazy() の引数は Promise<{ default: React.FC }> を返す関数でありさえすればよいので、リトライ処理を自前で追加することができる。

ネタ元:How to retry when React lazy fails - DEV Community 👩‍💻 👨‍💻

const retry = async <P extends {}>(
  importFn: () => Promise<{ default: React.FC<P> }>,
  retryCount = 0,
): Promise<{ default: React.FC<P> }> => {
  try {
    return await importFn();
  } catch (error) {
    if (retryCount < 3) {
      await new Promise(resolve => setTimeout(resolve, 1000));
      return retry(importFn, retryCount + 1);
    }
    throw error;
  }
};

const Component = lazy(() => retry(() => import('./Component')));

読み込み失敗を error boundary でハンドリングするかわりに、ここでやってもよさそう。

const Component = lazy(() => retry(() => import('./Component')).catch(error => {
  const ErrorMessage: React.FC = () => {
    ... // Bugsnag 通知とか
    return <span>Failed to load</span>;
  };
  return {
    default: ErrorMessage,
  };
}));

2Captcha

👊

kogai commented 5 years ago

「やろうとしていること」を事前に話してしまうとやる気が削がれる

https://sivers.org/zipit

Wasmのランタイムってこんなにあるのか

https://github.com/appcypher/awesome-wasm-runtimes

自分のも足してもらおうとしてる

MozillaのYoutubeチャンネル

https://www.youtube.com/watch?v=2awepiNoaZI&feature=youtu.be

We are JavaScripersで話してきました

https://speakerdeck.com/kogai/take-care-to-invalidate-client-side-storage

SmartHRさんのUIライブラリ

netlifyでStorybookもパブリックにしている

https://github.com/kufu/smarthr-ui

ザンギ

https://github.com/ossan-engineer/react-zangief

Option/Resultは欲しいというライブラリ

https://github.com/karen-irc/option-t

「現在時刻」が関わるテストの難しさ

https://t-wada.hatenablog.jp/entry/design-for-testability