diff --git a/package.json b/package.json index 94e737e..d85fc50 100644 --- a/package.json +++ b/package.json @@ -3,8 +3,9 @@ "version": "0.4.0", "private": true, "dependencies": { - "react": "^16.5.2", - "react-dom": "^16.5.2", + "react": "^16.6.0-alpha.8af6728", + "react-cache": "^16.6.0-alpha.8af6728", + "react-dom": "^16.6.0-alpha.8af6728", "react-scripts": "2.0.4" }, "scripts": { diff --git a/src/App.js b/src/App.js index c903672..f477a1f 100644 --- a/src/App.js +++ b/src/App.js @@ -1,49 +1,37 @@ -import React, { Component } from 'react'; +import React, { + unstable_ConcurrentMode as ConcurrentMode, + unstable_Suspense as Suspense, + Component +} from 'react'; import logo from './logo.svg'; import './App.css'; +import { createFetcher } from './cache'; -class LambdaDemo extends Component { - constructor(props) { - super(props); - this.state = { loading: false, msg: null }; - } - - handleClick = e => { - e.preventDefault(); - - this.setState({ loading: true }); - fetch('/.netlify/functions/hello') - .then(response => response.json()) - .then(json => this.setState({ loading: false, msg: json.msg })); - }; - - render() { - const { loading, msg } = this.state; +const DataResource = createFetcher(() => + fetch(`/.netlify/functions/hello`).then(x => x.json()) +); - return ( -

- -
- {msg} -

- ); - } +function LambdaDemo() { + const msg = DataResource.read().msg; + return

{msg}

; } class App extends Component { render() { return ( -
-
- logo -

- Edit src/App.js and save to reload. -

- -
-
+ +
+
+ logo +

+ Edit src/App.js and save to reload. +

+ + + +
+
+
); } } diff --git a/src/cache.js b/src/cache.js new file mode 100644 index 0000000..044877d --- /dev/null +++ b/src/cache.js @@ -0,0 +1,17 @@ +// cache.js +import { createCache, createResource } from 'react-cache'; + +export let cache; +function initCache() { + cache = createCache(initCache); +} +initCache(); + +export function createFetcher(callback) { + const resource = createResource(callback); + return { + read(...args) { + return resource.read(cache, ...args); + } + }; +} diff --git a/src/lambda/hello.js b/src/lambda/hello.js index 49b0bc8..9cb06b0 100644 --- a/src/lambda/hello.js +++ b/src/lambda/hello.js @@ -4,8 +4,6 @@ const obj = { }; export function handler(event, context, callback) { console.log('qsp', event.queryStringParameters); - console.log('**********'); - console.log('mvsp', event.multiValueQueryStringParameters); callback(null, { statusCode: 200, body: JSON.stringify({ msg: 'Hello, World!', ...obj }) diff --git a/yarn.lock b/yarn.lock index ef5c115..05498f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6885,6 +6885,10 @@ react-app-polyfill@^0.1.3: raf "3.4.0" whatwg-fetch "3.0.0" +react-cache@^16.6.0-alpha.8af6728: + version "16.6.0-alpha.8af6728" + resolved "https://registry.yarnpkg.com/react-cache/-/react-cache-16.6.0-alpha.8af6728.tgz#b0a9d1d1c598245540032fa6e2ab4bbcb22ae840" + react-dev-utils@^6.0.4: version "6.0.4" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-6.0.4.tgz#cd6d2712aa22d67751ef6757dc82787351da8826" @@ -6912,14 +6916,14 @@ react-dev-utils@^6.0.4: strip-ansi "4.0.0" text-table "0.2.0" -react-dom@^16.5.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.5.2.tgz#b69ee47aa20bab5327b2b9d7c1fe2a30f2cfa9d7" +react-dom@^16.6.0-alpha.8af6728: + version "16.6.0-alpha.8af6728" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.6.0-alpha.8af6728.tgz#0bc2020dcf0a594fe06e41379a9346d1982f587b" dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.10.0-alpha.8af6728" react-error-overlay@^5.0.4: version "5.0.4" @@ -6978,14 +6982,14 @@ react-scripts@2.0.4: optionalDependencies: fsevents "1.2.4" -react@^16.5.2: - version "16.5.2" - resolved "https://registry.yarnpkg.com/react/-/react-16.5.2.tgz#19f6b444ed139baa45609eee6dc3d318b3895d42" +react@^16.6.0-alpha.8af6728: + version "16.6.0-alpha.8af6728" + resolved "https://registry.yarnpkg.com/react/-/react-16.6.0-alpha.8af6728.tgz#b97b6453c252a1f6ad185acc81aca1485cd3e120" dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" prop-types "^15.6.2" - schedule "^0.5.0" + scheduler "^0.10.0-alpha.8af6728" read-pkg-up@^1.0.1: version "1.0.1" @@ -7386,10 +7390,11 @@ saxes@^3.1.3: dependencies: xmlchars "^1.3.1" -schedule@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/schedule/-/schedule-0.5.0.tgz#c128fffa0b402488b08b55ae74bb9df55cc29cc8" +scheduler@^0.10.0-alpha.8af6728: + version "0.10.0-alpha.f47a958" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.10.0-alpha.f47a958.tgz#0063a5c21aad2038111c316e417e9702d1ca7007" dependencies: + loose-envify "^1.1.0" object-assign "^4.1.1" schema-utils@^0.4.4, schema-utils@^0.4.5: