У меня есть многоязычный веб-проект, созданный React.js и typescript, и я хочу использовать bootstrap 5 CSS. Проблема в том, что я хочу динамически изменять ссылку CSS начальной загрузки в разделе заголовка в зависимости от языка (ltr или rtl).
Эта ссылка в файле public/index.html:
<head>
...
<link href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel = "stylesheet"
integrity = "sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin = "anonymous">
...
</head>
преобразовать в это динамически:
<head>
...
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.rtl.min.css" integrity = "sha384-mUkCBeyHPdg0tqB6JDd+65Gpw5h/l8DKcCTV2D2UpaMMFd7Jo8A+mDAosaWgFBPl" crossorigin = "anonymous">
...
</head>
После смены языка я хочу изменить ссылку CSS для rtl или ltr. Я использую метод на маршруте и успешно меняю каталог HTML, но хочу изменить его с помощью React.js и TypeScript.
Есть ли какое-нибудь решение для этого?
Вы можете сделать это с помощью ReactHelmet. Вы можете создать компонент StyleSheetUrlSelector. Затем на основе ваших критериев вы можете отображать любую таблицу стилей, которую хотите отобразить.
import React,{ FC } from "react";
import ReactHelmet from 'react-helmet';
interface ICssSelector {
ltr:boolean;
}
const CssSelector:FC<ICssSelector> =(props)=>{
const {ltr} =props;
return(
ltr === true?
<ReactHelmet link = {
[{"rel": "stylesheet", type:"text/css", "href": "/style.ltr.css"}]
}/>
: <ReactHelmet link = {
[{"rel": "stylesheet", type:"text/css", "href": "/style.rtl.css"}]
}/>
);
}
export default CssSelector