@@ -22,22 +22,35 @@ export default function Term({ type, strong = false, children }) {
2222 const location = useLocation ( ) ;
2323
2424 const wrap = ( content ) => {
25- // 現在のページで用語が初出であればリンクを表示する必要がない
26- const shouldLinkToReferencePage = Boolean (
27- location . pathname !== term . referencePage &&
28- location . pathname + "/" !== term . referencePage ,
29- ) ;
25+ const shouldLinkToReferencePage = ( ) => {
26+ // referencePageがundefinedならばリンクを表示しない
27+ if ( term . referencePage === undefined ) return false ;
28+
29+ // referencePageTitleがundefinedならばエラーを投げる (明らかに人的ミスのため)
30+ if ( referencePageTitle === undefined ) {
31+ throw new Error (
32+ `The page title of the reference \n" ${ term . referencePage } " \n is not defined in referencePageTitles in "src/components/Term/definition.js"` ,
33+ ) ;
34+ }
35+
36+ // referencePageの#アンカーを除外
37+ const referenceLink = term . referencePage . split ( "#" ) [ 0 ] ;
38+ // 現在のページで用語が初出であればリンクを表示する必要がない
39+ if ( location . pathname === referenceLink ) return false ;
40+ if ( location . pathname + "/" === referenceLink ) return false ;
41+ return true ;
42+ } ;
3043
3144 return (
3245 < Tippy
3346 theme = "material"
34- interactive = { shouldLinkToReferencePage }
47+ interactive = { shouldLinkToReferencePage ( ) }
3548 appendTo = { window . document . body }
3649 content = {
3750 < div className = { styles . tooltipContent } >
3851 < header className = { styles . tooltipContentHeader } > { term . name } </ header >
3952 < div > { term . definition } </ div >
40- { shouldLinkToReferencePage && (
53+ { shouldLinkToReferencePage ( ) && (
4154 < Link className = { styles . tooltipLink } to = { term . referencePage } >
4255 < span > { referencePageTitle } へ</ span >
4356 < MdArrowForward size = "1.2rem" />
0 commit comments