Programming/React
React useEffect 사용 title 변경하기
Chanho.
2021. 4. 25. 23:55
반응형
실습은 codesandbox를 이용했습니다.
app.js
import React, { useState, useEffect } from "react";
import "./styles.css";
export default function App() {
return (
<div className="App">
<button>Home</button>
<button>Content</button>
<button>Setup</button>
</div>
);
}
예시로 각각의 button 을 클릭했을 시 그 페이지로 이동했다고 가정하고 웹 title을 변경하도록 하겠습니다.
const useTitle = () => {
const [title, setTitle] = useState(null);
const updateTitle = () => {
const htmlTitle = document.querySelector("title");
htmlTitle.innerHTML = title;
};
useEffect(updateTitle, [title]);
return setTitle;
};
우선 useTitle 함수를 작성하고 useEffect 를 이용하여 컴포넌트가 렌더링 된 이후에 updateTitle 을 실행하여 직접적으로 DOM에 접근하여 title을 변경시켜줍니다.
export default function App() {
const changeTitle = useTitle();
return (
<div className="App">
<button onClick={() => changeTitle("Home")}>Home</button>
<button onClick={() => changeTitle("Content")}>Content</button>
<button onClick={() => changeTitle("Setup")}>Setup</button>
</div>
);
}
이제 useTitle에서 return 한 값 setTitle을 changeTitle 변수에 담아줍니다.
그리고 각각의 버튼에 onClick 이벤트로 changeTitle로 해당하는 title text를 넘겨줍니다.