ant.design(UI组件)
import React, { useEffect, useState } from "react";
import { Amplify, API, graphqlOperation } from 'aws-amplify'
import { createTodo, createBook } from '../graphql/mutations'
import { listTodos, listBooks} from '../graphql/queries'
/*import awsExports from "./aws-exports";
Amplify.configure(awsExports);*/
// import Calendar from 'react-calendar';
// import 'react-calendar/dist/Calendar.css';
import "../resources/Calendar.css";
import { PlusOutlined,DownOutlined,DownloadOutlined } from '@ant-design/icons';
import {
ModalForm,
ProForm,
ProFormDateRangePicker,
ProFormSelect,
ProFormText,
} from '@ant-design/pro-components';
import { Button, Form, message,Space, Checkbox,Dropdown,Typography } from 'antd';
import { getOverrideProps } from "@aws-amplify/ui-react/internal";
import {
Flex,
Icon,
Image,
SliderField,
SwitchField,
Text,
View,
Menu,
MenuItem,
FieldGroupIcon,
FieldGroupIconButton,
TextField
} from "@aws-amplify/ui-react";
const items = [
{
key: '1',
label: (
<a target="_blank" rel="noopener noreferrer" href="https://www.antgroup.com">
1st menu item
</a>
),
},
{
key: '2',
label: (
<a target="_blank" rel="noopener noreferrer" href="https://www.aliyun.com">
2nd menu item
</a>
),
},
{
key: '3',
label: (
<a target="_blank" rel="noopener noreferrer" href="https://www.luohanacademy.com">
3rd menu item
</a>
),
},
];
export default function UserBiography(props) {
const { overrides, ...rest } = props;
const initialState = { name: '', description: '' }
const [formState, setFormState] = useState(initialState)
const [todos, setTodos] = useState([])
const [books, setBooks] = useState([])
const [date, setDate] = useState(new Date());
useEffect(() => {
fetchTodos();
}, []);
async function fetchTodos() {
try {
const todoData = await API.graphql(graphqlOperation(listTodos));
const todos = todoData.data.listTodos.items
setTodos(todos)
} catch (err) { console.log('error fetching todos') }
}
function setInput(key, value) {
setFormState({ ...formState, [key]: value });
}
async function addTodo() {
try {
if (!formState.name || !formState.description) return
const todo = { ...formState }
setTodos([...todos, todo])
setFormState(initialState)
await API.graphql(graphqlOperation(createTodo, {input: todo}))
} catch (err) {
console.log('error creating todo:', err)
}
}
async function addBooks() {
try {
// if (!formState.name || !formState.description) return
// const todo = { ...formState }
const todo = {
yoyakukijitu:"11111",
yoyakujikan:"3:00 AM - 4:00 PM",
danwakeijiki:"2023-03-03"
}
// setTodos([...todos, todo])
// setFormState(initialState)
await API.graphql(graphqlOperation(createBook, {input: todo}))
} catch (err) {
console.log('error creating todo:', err)
}
}
return (
<div style={styles.container}>
<Space direction="vertical">
<Space wrap>
<Dropdown
menu={{
items,
}}
placement="bottomLeft"
>
<Button shape="circle" type="link" icon={<DownloadOutlined />} />
</Dropdown>
</Space>
</Space>
</div>
)
}
const styles = {
container: { width: 400, margin: '0 auto', display: 'flex', flexDirection: 'column', justifyContent: 'center', padding: 20 },
todo: { marginBottom: 15 },
input: { border: 'none', backgroundColor: '#ddd', marginBottom: 10, padding: 8, fontSize: 18 },
todoName: { fontSize: 20, fontWeight: 'bold' },
todoDescription: { marginBottom: 0 },
button: { backgroundColor: 'black', color: 'white', outline: 'none', fontSize: 18, padding: '12px 0px' },
aaa:{width: "31px"}
}
效果展示