Untuk exercise kali ini, silahkan teman-teman buka file src\App.js, jangan lupa untuk menjalankan pnpm start untuk menjalankan server Reactnya.
- Function:
Task1 - Task: Salin komponen di bawah. Tambahkan di komponen
Boxterluar tiga buah atribut:marginXdengan valueauto,bgColordengan valueblue.800,colordengan valuewhite. Ambil propspropertyyang diterima oleh komponenTask1dan tampilkan di dalam komponenBoxyang sudah dibuat.
function AirbnbCard() {
const property = {
imageUrl: "https://bit.ly/2Z4KKcF",
imageAlt: "Rear view of modern home with pool",
beds: 3,
baths: 2,
title: "Modern home in city center in the heart of historic Los Angeles",
formattedPrice: "$1,900.00",
reviewCount: 34,
rating: 4,
};
return (
<Box maxW="sm" borderWidth="1px" borderRadius="lg" overflow="hidden">
<Image src={property.imageUrl} alt={property.imageAlt} />
<Box p="6">
<Box display="flex" alignItems="baseline">
<Badge borderRadius="full" px="2" colorScheme="teal">
New
</Badge>
<Box
color="gray.500"
fontWeight="semibold"
letterSpacing="wide"
fontSize="xs"
textTransform="uppercase"
ml="2"
>
{property.beds} beds • {property.baths} baths
</Box>
</Box>
<Box
mt="1"
fontWeight="semibold"
as="h4"
lineHeight="tight"
noOfLines={1}
>
{property.title}
</Box>
<Box>
{property.formattedPrice}
<Box as="span" color="gray.600" fontSize="sm">
/ wk
</Box>
</Box>
<Box display="flex" mt="2" alignItems="center">
{Array(5)
.fill("")
.map((_, i) => (
<StarIcon
key={i}
color={i < property.rating ? "teal.500" : "gray.300"}
/>
))}
<Box as="span" ml="2" color="gray.600" fontSize="sm">
{property.reviewCount} reviews
</Box>
</Box>
</Box>
</Box>
);
}- Function:
Task2 - Task: Buatlah sebuah komponen yang memiliki komponen terluarnya berupa
SimpleGriddengan konfigurasi responsive: [1, 2, 4] yang ditaruh di dalam atributcolumns, dan tambahkan atributgapsenilai14. Jadikan komponenTask1sebagai komponen anak dariSimpleGridtersebut, dan gunakanTask2_Datasebagai props untuk mengisi data yang akan ditampilkan olehTask1(lakukan iterasi terhadap data di dalam arrayTask2_data).
- Function:
Task3 - Task: Salin komponen di bawah. Ambil props
titledan jadikan sebagai isi dari componentModalHeader, dan ambil propsbodydan jadikan sebagai isi dari componentModalBody. Pastikan Modal bisa dibuka dengan tombolButtonyang telah disediakan, dan bisa ditutup dengan meng-klik sebuah button di dalam modal bertuliskanClose.
function BasicUsage() {
const { isOpen, onOpen, onClose } = useDisclosure();
return (
<>
<Button onClick={onOpen}>Open Modal</Button>
<Modal isOpen={isOpen} onClose={onClose}>
<ModalOverlay />
<ModalContent>
<ModalHeader>Modal Title</ModalHeader>
<ModalCloseButton />
<ModalBody>
<Lorem count={2} />
</ModalBody>
<ModalFooter>
<Button colorScheme="blue" mr={3} onClick={onClose}>
Close
</Button>
<Button variant="ghost">Secondary Action</Button>
</ModalFooter>
</ModalContent>
</Modal>
</>
);
}