todo/js/components/TodoApp.js (38 lines of code) (raw):
// @flow
import type {TodoAppQuery} from 'relay/TodoAppQuery.graphql';
import type {
PreloadedQuery,
EntryPointProps,
EntryPointComponent,
} from 'react-relay';
import TodoList from './TodoList';
import * as React from 'react';
import {graphql, usePreloadedQuery} from 'react-relay';
type PreloadedQueries = {|todoAppQueryRef: PreloadedQuery<TodoAppQuery>|};
type Props = EntryPointProps<PreloadedQueries>;
export default (function TodoApp({queries}: Props): React.Node {
const {user} = usePreloadedQuery(
graphql`
query TodoAppQuery($userId: String) @preloadable {
user(id: $userId) @required(action: THROW) {
...TodoList_user
}
}
`,
queries.todoAppQueryRef,
);
return (
<div>
<section className="todoapp">
<TodoList userRef={user} />
</section>
<footer className="info">
<p>Double-click to edit a todo</p>
<p>
Created by the{' '}
<a href="https://facebook.github.io/relay/">Relay team</a>
</p>
<p>
Part of <a href="http://todomvc.com">TodoMVC</a>
</p>
</footer>
</div>
);
}: EntryPointComponent<PreloadedQueries>);