onClick = {handleIncrease()}//X
<Tweet>나의 새 트윗</Tweet>
//여기서 '나의 새 트윗'이라는 문자열을 div 태그 안쪽에 출력하려면
function Tweet(props){
return
<div>{props.children}</div>
}
state 와 props의 필요성 : 프론트엔드 애플리케이션의 특성 상 변하는 값이 많고, 그 하나의 값이 변하면 다른 곳에 영향을 미치는 경우가 많다. 변하는 값을 state로 다루고, 영향을 미치는 경우 props로 전달해주면 훨씬 편리하게 데이터들을 다룰 수 있다.
state가 변경되면 컴포넌트는 리랜더링/재랜더링* 된다.
props의 immutable은 중요하다 !! (props.username = "안녕" 이런식의 변경 x)
상태 변환 함수는 setState라고도 불렀다 (예전에)
React에서는 변경할 수 있는 state가 일반적으로 컴포넌트의 state 속성에 유지되며 setState()에 의해 업데이트됩니다.우리는 React state를 “신뢰 가능한 단일 출처 (single source of truth)“로 만들어 두 요소를 결합할 수 있습니다. 그러면 폼을 렌더링하는 React 컴포넌트는 폼에 발생하는 사용자 입력값을 제어합니다. 이러한 방식으로 React에 의해 값이 제어되는 입력 폼 엘리먼트를 “제어 컴포넌트 (controlled component)“라고 합니다. 출처
const [data,setData] = useState(dummyTweets)
const handleButtonClick = (event) => {
const tweet = {
id: data.length + 1,
username : user,
picture: '',
content:msg,
createdAt: new Date(),
updatedAt : new Date(),
};
setData([tweet,...data]);
};
//button을 클릭하는 이벤트가 발생했을 때, 초기에 현재값으로 dummyTweets가 들어있지만,
//새로 들어온 값인 tweet를 앞에 그리고 '...data' 이용해서 이전의 dummyTweets 값들도 위에 붙여줌.
//혹시 누군가가 이 글을 본다면...부분만 잘라서 가져온 거라 이해 안 될 수 있음 주의...
배경 패턴은 내가 직접 그린 호박을 패턴으로 만든 배경이다!
이번에는 직접 디자인 구상까지 해보고, 필요한 것들을 만들거나 따로 다운 받아 준비하는 등, 내가 그냥 할 수 있는 데서 끝나지 않아서 뿌듯하다.
전에 fontawesome을 사용하면서 버전때문에 애먹었던 것을 해결한 참이라 원하는 아이콘을 가져다가 만들 수 있어서 좋았다! 역시 문제를 직접 해결해봐야 다음에 그걸 사용할 수 있다는 자신감이 생긴다.
배경의 패턴이 조금 더 자잘했어도 괜찮을듯? 이제보니 좀 큰 것 같기도...
tweets 페이지의 width가 mypage나 about 페이지와 달라서 페이지가 바뀔 때마다 살짝씩 바뀌는 크기가 조금...킹받는다... 이유가 뭘지 찾아봐야겠음.
아예 다른 구성으로 만들어 봐도 좋았을듯! 그렇게 되면 왠지 시간이 오래 걸릴 거 같아 일단 주어진 컴포넌트 구성대로 만들긴 했지만... 다양한 모양으로 만들 수 있는 여지가 있을듯.