material-ui 为了防止CssVarsProvider使用本地存储,添加一个功能,

6ljaweal  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(45)

重复问题

  • 我已搜索现有的问题

最新版本

  • 我已测试了最新版本

总结 💡

当前的 CssVarsProvider 实现需要使用本地存储来存储主题设置。我的建议是使本地存储的使用变为可选。一个想法是在 CssVarsProvider 中添加一个新的 mode 属性,除了现有的 defaultMode 属性。有了这个新属性,主题将完全由该属性控制,不受本地存储的影响。另一个建议是将写入本地存储的操作延迟到使用 useColorScheme hook 的setter显式更改主题时。这样,如果不使用setter,就不会向本地存储写入任何内容。

示例 🌈

  • 无响应*

动机 🔦

当前版本的 CssVarsProvider 需要使用本地存储,即使在某些情况下它是不必要的。例如,如果主题仅由系统主题控制,或者如果只有一个主题,就没有必要使用本地存储。由于状态性,本地存储增加了不必要的复杂性。例如,它增加了检查本地存储和代码中的不同状态如何交互的需求。

bfhwhh0e

bfhwhh0e1#

有人在Joy中找到了解决这个问题的方法吗?我需要以编程方式更改某些模板的颜色方案,似乎我需要以复杂的方式与本地存储和CSSVarsProvider进行交互才能实现这一点。

mcdcgff0

mcdcgff02#

我不确定这是否应该作为对这个工单的评论,还是应该作为一个单独的工单。但是使用localstorage这样的方式在开发具有不同主题的应用时会给开发者带来一些头疼的问题。

假设我有一个应用foo和另一个应用bar,每个应用都有不同的主题。首先我在本地打开foo,然后在localhost:8080上切换到工作于bar,之后在localhost:8080上打开它,它显示出了foo的主题。

这似乎需要手动进入并清除localstorage,所以拥有禁用该功能的能力将会很有用!

至少,我会建议在文档中添加一条说明,指导开发者在切换具有不同主题的站点之间时清除localstorage。

相关问题