AvailableItems.js 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from "react";
  2. import { nanoid } from "nanoid";
  3. import { useRecoilState, atom } from "recoil";
  4. import { ItemListAtom } from "./Items";
  5. export const AvailableItemListAtom = atom({
  6. key: "availableItemList",
  7. default: [],
  8. });
  9. const AvailableItem = ({ data }) => {
  10. const { content } = data;
  11. const [itemList, setItemList] = useRecoilState(ItemListAtom);
  12. const onClickHandler = () => {
  13. setItemList((oldItemList) => [
  14. ...oldItemList,
  15. {
  16. ...data,
  17. x: 200,
  18. y: 50,
  19. id: nanoid(),
  20. },
  21. ]);
  22. };
  23. return (
  24. <span onClick={onClickHandler}>
  25. {content ? content.slice(-20) : content}
  26. </span>
  27. );
  28. };
  29. const AvailableItems = ({}) => {
  30. const [availableItemList, setAvailableItemList] = useRecoilState(
  31. AvailableItemListAtom
  32. );
  33. return (
  34. <ul>
  35. {availableItemList.map((availableItem) => (
  36. <li>
  37. <AvailableItem key={availableItem.id} data={availableItem} />
  38. </li>
  39. ))}
  40. </ul>
  41. );
  42. };
  43. export default AvailableItems;