React Basic 검토
1. 요소 대 구성 요소
이전: 요소 형식
ReactDOM.render(<App />, appDOM)
const app = (
<div>
<Title>{counter}th cat meme</Title>
<CatForm handleFormSubmit={handleFormSubmit} />
<MainCard img="https://cataas.com/cat/595f280b557291a9750ebf65/says/JavaScript" />
<Favorites />
</div>
);
const appDOM = document.querySelector('#app');
ReactDOM.render(app, appDOM)
이후: 구성 요소 형식
app
javascript 요소에서 React Component로 변경해야 합니다. 이는 상태를 올리기 위해 코드를 변경할 때 자주 발생합니다. ReactDOM.render(<App />, appDOM)
Component가 아닌 요소의 이름을 부르는 것처럼
App
만 쓰면 다음과 같은 오류 메시지가 나타납니다.Warning: Functions are not valid as a React child. This may happen if you return a Component instead of from render. Or maybe you meant to call this function rather than return it.
const App = () {
const [counter, setCounter] = React.useState(100);
function handleFormSubmit() {
// function
}
return(
<div>
<Title>{counter}th cat meme</Title>
<CatForm handleFormSubmit={handleFormSubmit} />
<MainCard img="https://cataas.com/cat/595f280b557291a9750ebf65/says/JavaScript" />
<Favorites />
</div>
)
};
const appDOM = document.querySelector('#app');
ReactDOM.render(<App />, appDOM)
2. 목록의 각 하위 항목에는 고유한 키 소품이 있어야 합니다.
Warning: Each child in a list should have a unique "key" prop.
Check the render method of
Favorites
. See https://reactjs.org/link/warning-keys for more information.
at CatItem (:70:45)
at Favorites
at div
at App (:99:31)
전에:
<ul className="favorites">
{
cats.map(cat => <CatItem img={cat} />)
}
</ul>
후에:
<ul className="favorites">
{
cats.map(cat => <CatItem img={cat} key={cat} />)
}
</ul>
3. useState로 생성된 목록에 새 항목을 추가하는 방법
es6 확산 연산자 사용
function Favorites() {
const [favorites, setFavorites] = React.useState([CAT1, CAT2])
function handleHeartClick() {
console.log("Clicked Heart.");
// add cat to the list
setFavorites([...favorites, CAT3])
}
}
테스트 저장소: https://github.com/sosunnyproject/cat-meme-react
Reference
이 문제에 관하여(React Basic 검토), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sosunnyproject/reviewing-react-basic-fhb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)