javascript https://codesandbox.io/s/8nq4w3jj39このデモ読み解いたもの

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript https://codesandbox.io/s/8nq4w3jj39このデモ読み解いたもの相关的知识,希望对你有一定的参考价值。


class App extends React.Component {
  state = {
    showHello: false,
    loadingIndicator: false
  };
  // ボタンおした時発火する関数
  requestData = () => {
    this.setState({
      loadingIndicator: true
    });
    // Fiberの処理を止めないように、低優先度としてロード開始のstateを渡す
    ReactDOM.unstable_deferredUpdates(() => {
      this.setState({
        loadData: true
      });
    });
  };

  render() {
    // 今までと似たような処理だ
    return (
      <div>
        {this.state.loadingIndicator && <p>Requested content:</p>}
        {/*  loadDataされたら(=ボタンが押されたら)非同期処理開始 */}
        {this.state.loadData && (
         {/* AsyncTextをそのまま呼び出せないので、Loaderを渡している。(jsxのエレメント渡すの、あまりキレイじゃない気がしてるけどどうなんだろう */}
          <Loader
            ms={1000}
            fallback={<span>The content is still loading :(</span>}
          >
            <AsyncText text="Hello world" ms={2500} />
          </Loader>
        )}
        <p>
          <button onClick={this.requestData}>load data</button>
        </p>
      </div>
    );
  }
}
// すごい、Timeoutなんて生えるのか・・・?
import React, { Timeout } from "react";

// なんだかめんどくさそうな感じになってきたぞ。
const Loader = props => <Timeout ms={props.ms}>
  {/*Timeoutはchildren as function*/}
  {didTimeout => {
    return didTimeout ? props.fallback : props.children;
  }}
</Timeout>
// SFCとしてAsyncTextを実装
const AsyncText = props => {
  // try cactchはデモ用。通常はいらない
  const data = readText(cache, [props.text, props.ms]);
  return <span>{data}</span>;
};

import React from "react";
import { createResource, createCache } from "simple-cache-provider";

const cache = createCache();
// このサンプルでは、ただtextを非同期で返しているだけ。msは遅延秒数
const readText = createResource(
  // 第一引数は非同期処理の関数。Promiseを返す
  ([text, ms = 0]) => {
    return new Promise(resolve => {
      console.log(new Date().getTime(), "Promise created, will resolve in ", ms);
      setTimeout(() => {
        resolve(text);
      }, ms);
    });
  },
 // 第二引数となるf関数は、キャッシュするためのハッシュのための関数らしい。↓
  // https://github.com/facebook/react/blob/b15b165e0798dca03492e354ebd5bcf87b711184/packages/simple-cache-provider/src/SimpleCacheProvider.js#L253
 ([text, ms]) => text
);

以上是关于javascript https://codesandbox.io/s/8nq4w3jj39このデモ読み解いたもの的主要内容,如果未能解决你的问题,请参考以下文章

javascript JavaScript isset()等效: - JavaScript

JavaScript 使用JavaScript更改CSS(JavaScript)

JavaScript之基础-1 JavaScript(概述基础语法)

前端基础-JavaScript的基本概述和语法

JavaScript

JavaScript