React 앱에 동적 제목을 추가하는 방법
19129 단어 reactwebapphooksreacthooks
마지막으로 반응 헬멧을 사용하여 게시했습니다. 그 이후로 React Hooks를 사용하여 동일한 작업을 수행하는 방법을 찾았습니다. 두 가지 접근 방식 모두 문제를 해결합니다. 제 생각에는 이것이 더 간단합니다. 결국 선택합니다 :)
시작하자.
이 게시물에서는 웹 앱에 동적 제목 동작을 추가하기 위해 간단한 React Hook을 만드는 방법을 보여 드리겠습니다.
React Hooks가 무엇인지 잘 모르겠다면 관련된 모든 것을 읽을 수 있습니다. here
여기에 적용 가능한 예가 있는 리포지토리가 있습니다. GitHub Repo
요약
1. 제목 변경을 처리하는 함수를 만듭니다.
제목을 변경하는 후크를 생성합니다. 이름은
useDocumentTitle.js
입니다.// useDocumentTitle.js
import { useRef, useEffect } from 'react'
function useDocumentTitle(title, prevailOnUnmount = false) {
const defaultTitle = useRef(document.title);
useEffect(() => {
document.title = title;
}, [title]);
useEffect(() => () => {
if (!prevailOnUnmount) {
document.title = defaultTitle.current;
}
}, [])
}
export default useDocumentTitle
제목 매개변수가 변경될 때마다 이 후크를 사용하여 제목 변경을 처리합니다.
여기에 몇 가지 참고 사항:
prevailOnUnmount
구성을 처리합니다. false
입니다. 어떻게 사용하는지 보자
2. 응용 프로그램의 모든 페이지 구성 요소에서 사용합니다.
이 예에서는 간단한 시나리오와 복잡한 시나리오의 두 가지 시나리오를 볼 수 있습니다.
간단한 것을 봅시다.
// AppSimple.js
import React from 'react'
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
import useDocumentTitle from './useDocumentTitle'
function Page(props) {
return <h2>{props.content}</h2>
}
function Home() {
useDocumentTitle('Home title 👻')
return <Page content='This is Home! ' />
}
function About() {
useDocumentTitle('About title 👽')
return <Page content='About!' />
}
function Other() {
useDocumentTitle('Other title 👾')
return <Page content='And this is Other!' />
}
function App() {
return (
<Router>
<div>
<ul>
<li>
<Link to='/'>Home</Link>
</li>
<li>
<Link to='/about'>About</Link>
</li>
<li>
<Link to='/other'>Other</Link>
</li>
</ul>
<hr />
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
<Route path='/other' component={Other} />
</div>
</Router>
)
}
export default App
보시다시피 모든 구성 요소는
useDocumentTitle
후크를 사용합니다. 이것은 제목 변경을 관리하는 가장 간단한 방법입니다.여기에 몇 가지 참고 사항:
react-router
를 사용하여 앱의 여러 페이지를 처리합니다. useDocumentTitle
실행이 있습니다. Open In New Window
을 선택하여 제목 변경 사항을 확인하십시오. 조금 더 복잡한 것을 사용하는 두 번째 접근 방식을 살펴보십시오.
// AppSimple.js
import React from 'react'
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
import useDocumentTitle from './useDocumentTitle'
function Page(props) {
const titlePrefix = 'AppName 🤠 | '
useDocumentTitle(`${titlePrefix}${props.title}`)
return <h2>{props.content}</h2>
}
function Home() {
return <Page content='This is Home!' title='Home Title 👻' />
}
function About() {
return <Page content='About!' title='About title 👽' />
}
function Other() {
return <Page content='And this is Other!' title='Other title 👾' />
}
function App() {
return (
<Router>
<div>
<ul>
<li>
<Link to='/'>Home</Link>
</li>
<li>
<Link to='/about'>About</Link>
</li>
<li>
<Link to='/other'>Other</Link>
</li>
</ul>
<hr />
<Route exact path='/' component={Home} />
<Route path='/about' component={About} />
<Route path='/other' component={Other} />
</div>
</Router>
)
}
export default App
보시다시피
Page
라는 하나의 구성 요소만 후크를 호출합니다. 이런 식으로 모든 제목을 각 페이지에 prop
로 보내고 Page
구성 요소에서 이를 사용하여 변경합니다.여기에 몇 가지 참고 사항:
react-router
와 동일한 구조를 사용하여 앱의 여러 페이지를 처리합니다. useDocumentTitle
. Page
구성 요소에는 titlePrefix
라는 새로운 기능이 있습니다. 이 값은 모든 제목 변경에서 접두사(제목 앞의 텍스트)를 설정할 수 있음을 확인하기 위한 것입니다. Open In New Window
을 선택하여 제목 변경 사항을 확인하십시오. 그리고 그게 다야. 읽어주셔서 감사합니다. 행복한 코딩을 하세요!
Reference
이 문제에 관하여(React 앱에 동적 제목을 추가하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/luispa/how-to-add-a-dynamic-title-on-your-react-app-1l7k텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)