前提・実現したいこと
React(TypeScript) × Railsでアプリケーション開発しています。各ユーザーごとに画面UIの色を変更したいと思い調べていると、CSS変数というものを見つけました。ただ、ReactでのCSS変数の使い方がイマイチ分からず、全体の方針などお教えいただけると嬉しいです。
React (TypeScript)
Ruby on Rails
material UI
やりたいことのフロー
- 今ベタがきでCSSの色を指定しているところを変数で統一する
- ユーザーテーブルにカラーコードを追加し、ユーザーごとにカラーコード(#FFFFFF的な)を入力できる画面を用意する
- 各ユーザーが持つカラーコードをDB上から引っ張り、フロントに渡す
- フロント側のCSS変数で色がユーザーごとに出し分けられる
まずは、"1"をやりたいと考えています。現状、すべてのカラーコードをベタがきしているのでこれを変数化したいです。
また、Material UIを用いているため、ThemeTemplate.tsxで変数管理するのも良いのではと思っています。(その場合、Rails側からどのControllerで渡すべきなのかイマイチ分からないのですが。。)
- ThemeTemplate.tsx
React
1const theme = createMuiTheme({ 2 overrides:{ 3 MuiCard:{ 4 root:{ 5 background: 'none', 6 'box-shadow': 'none' 7 }, 8 }, 9 palette: { 10 primary: { 11 main: "#efefef", 12 light: "#faabcb", 13 dark: "#cccccc" 14 }, 15 }, 16省略... 17})
- index.tsx (実際の色を変更したいユーザー側の画面)
React
1const useStyles = makeStyles((theme: Theme) => 2 createStyles({ 3 root: { 4 padding: theme.spacing(1, 2), 5 color: "white", 6 }, 7 hogehoge: { 8 backgroundColor: "#FEE8EA", //ここを変数化したい 9 }, 10省略... 11 }) 12)
試したこと
通常のCSSでの書き方などは記事があったのですが、Reactのものはなかなか見つからず、どのように書けるのかがわかりませんでした。
また、ただ1ファイル内で変数化して管理を楽にするのではなく、DB側からユーザーに紐づくカラーコードのデータを取ってきてそれを変数に入れるなどをしたいので、Rails側も考慮して変数化が必要なのでは と考えています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/01 09:57