FanPage만들기[2]
Styled-component로 모든 시멘틱태그를 만든다.
export const Section = styled.section` display: flex; margin-bottom: 1rem; `; export const Label = styled.label` width: 5rem; display: flex; align-items: center; `; <Section> <Label>수신인 : </Label> </Section>
// SendPage.jsx newMessage({ id: crypto.randomUUID(), nickname, context, selectBox, }); e.target.reset(); //input태그가 실행되고 나서 빈값으로 돌아오게 만듦
Home.jsx
<Content>
<MemberList/>
<SendPage newMessage={newMessage} />
<SendList />
</Content>
SendPage에서 데이터를 생성할때마다 Home.jsx에 props로 newMessage를 올려서 useState로 list화를 시킨뒤에 자식컴포넌트들로 뿌려준다.
const newMessage = (todo) => {
// 업데이트된 letterList를 사용하여 localStorage에 저장
const updatedList = [todo, ...letterList];
setLetterList(updatedList);
localStorage.setItem("letterList", JSON.stringify(updatedList));
};
const updatedList = [todo, ...letterList]; => todo라는 가장최근의 배열을 앞에 저장하고 스프레드 연산자(...)로 본래 배열을 뒤에 붙혀준다.
localStorage.setItem() ===> key와 value를 추가하는 의미
localStorage.setItem("letterList", JSON.stringify(updatedList));
키값 letterList를 가지면서 value는 updatedList라는 객체 데이터를 가지고 JSON.stringify라는 객체를 json으로 변형해주는 것으로 변형해준다.
useEffect(() => {
const list = JSON.parse(localStorage.getItem("letterList"));
if (list) {
setLetterList(list);
}
}, []);