reactjs 打包React应用程序,允许客户端修改一些CSS

cwxwcias  于 2023-05-17  发布在  React
关注(0)|答案(1)|浏览(81)

我有一个create-react-app项目,我目前使用react-scripts build打包。目前,样式是用scss文件完成的,一旦构建完成,可以在static/css/*.chunk.css下找到
我有一个特定的scss文件,它定义了应用程序的颜色。我希望客户端能够修改这些值,并重新启动前端与应用的变化。
我不知道什么是合适的方式来实现这一点。我会很感激一些指点。谢谢
我曾想过让django管理门户可以修改颜色,让前端从那里提取颜色值,但我不希望每个管理员都有访问权限,我宁愿让安装程序根据需要修改颜色值。

b09cbbtk

b09cbbtk1#

我建议使用CSS variables而不是scss变量来表示颜色。编译后的CSS将引用这些变量,但它们的值可以在前端动态更改。
你会在你的css中得到这样的东西:

body {
  background-color: var(--bg-color);
}

--bg-color是一个CSS变量。然后,您可以在前端将其设置为特定值。“如何”将取决于您想要使用什么库。使用emotion,它可能看起来像这样:

import React, { useState } from "react"
import { Global, css } from '@emotion/react'

function Foo() {
  const [color, setColor] = useState("blue")
  return (
    <div>
      <Global
        styles={css`
          :root {
            --bg-color: ${color};
          }
        `}
      />
      {/* ... */}
    </div>
  )
}

您可以设置变量的默认值如下:

body {
  background-color: var(--bg-color, red);
}

相关问题