Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8916

React RouterのuseParamsがcssの設定を初期化しやがって10時間苦しんだ話

$
0
0
ReactRouterのドキュメントにあるuseParams1をそのまま試しても自分のプロジェクトではうまく動作しませんでした。 試したコードは以下になります。 index.tsx import React from "react"; import ReactDOM from "react-dom"; import { BrowserRouter as Router, Switch, Route, useParams } from "react-router-dom"; function BlogPost() { let { slug } = useParams(); return <div>Now showing post {slug}</div>; } function HomePage() { return <div>HomePage</div>; } ReactDOM.render( <Router> <Switch> <Route exact path="/"> <HomePage /> </Route> <Route path="/blog/:slug"> <BlogPost /> </Route> </Switch> </Router>, document.getElementById("root") ); HomePage(/)だとreset.cssが効いて、自分で定義していた全体に反映されるindex.cssも効いていました。 ところが、BlogPost(/blog/hello-world)に遷移した時にどちらのcssも効かなくなってしまっていました。 自分で定義したcss(reset.cssとindex.css)はpublicフォルダ内に保存されていて、index.html内で適用されていました。 暫定的な解決方法 index.cssとreset.cssをindex.tsx内で呼び出すようにしてうまくcssが適用されるようになりました。 index.tsx import React from "react"; import ReactDOM from "react-dom"; import { BrowserRouter as Router, Switch, Route, useParams } from "react-router-dom"; import "./index.css"; import "./reset.css"; function BlogPost() { let { slug } = useParams(); return <div>Now showing post {slug}</div>; } function HomePage() { return <div>HomePage</div>; } ReactDOM.render( <Router> <Switch> <Route exact path="/"> <HomePage /> </Route> <Route path="/blog/:slug"> <BlogPost /> </Route> </Switch> </Router>, document.getElementById("root") ); https://reactrouter.com/web/api/Hooks/useparams ↩

Viewing all articles
Browse latest Browse all 8916

Trending Articles