From 5c3048bc9693b3a0401f571060376d9d5d179249 Mon Sep 17 00:00:00 2001 From: David McAfee Date: Wed, 22 Mar 2023 16:45:33 -0700 Subject: [PATCH 1/3] fix(data): replace broken JS example with a working React Native example (5257) --- .../datastore/native_common/data-access.mdx | 2 +- .../data-access/observe-update-snippet.mdx | 81 +++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/fragments/lib/datastore/react-native/data-access/observe-update-snippet.mdx diff --git a/src/fragments/lib/datastore/native_common/data-access.mdx b/src/fragments/lib/datastore/native_common/data-access.mdx index 5264181f306..f6cfebc90c6 100644 --- a/src/fragments/lib/datastore/native_common/data-access.mdx +++ b/src/fragments/lib/datastore/native_common/data-access.mdx @@ -64,7 +64,7 @@ import js_observe_update from "/src/fragments/lib/datastore/js/data-access/obser -import reactnative2 from "/src/fragments/lib/datastore/js/data-access/observe-update-snippet.mdx"; +import reactnative2 from "/src/fragments/lib/datastore/react-native/data-access/observe-update-snippet.mdx"; diff --git a/src/fragments/lib/datastore/react-native/data-access/observe-update-snippet.mdx b/src/fragments/lib/datastore/react-native/data-access/observe-update-snippet.mdx new file mode 100644 index 00000000000..d95325aa436 --- /dev/null +++ b/src/fragments/lib/datastore/react-native/data-access/observe-update-snippet.mdx @@ -0,0 +1,81 @@ +```js +// Example showing how to observe the model and keep state updated before +// performing a save. This uses the useEffect React hook, but you can +// substitute for a similar mechanism in your application lifecycle with +// other frameworks. + +const App = () => { + const [post, setPost] = useState(); + + useEffect(() => { + /** + * This keeps `post` fresh. + */ + const sub = DataStore.observeQuery(Post, (c) => + c.id.eq('5a3b284c-8afc-436a-9027-c8c32bfc8ed2') + ).subscribe(({ items }) => { + setPost(items[0]); + }); + + return () => { + sub.unsubscribe(); + }; + }, []); + + /** + * Create a new Post + */ + async function onCreate() { + const _post = await DataStore.save( + new Post({ + title: `New title ${Date.now()}`, + rating: Math.floor(Math.random() * (8 - 1) + 1), + status: PostStatus.ACTIVE + }) + ); + + console.log(_post); + setPost(_post); + } + + return ( + + + + + {post?.title} +