我正在动态地改变语言,所以我想从rtl切换到ltr,反之亦然。
我使用bootstrap-rtl来支持rtl。
下面是我的代码:
componentWillReceiveProps(nextProps) {
if (this.props.isRTL !== nextProps.isRTL) {
if (nextProps.isRTL) {
require('bootstrap-rtl/dist/css/bootstrap-rtl.css');
} else {
//what should i do here????????????
}
}
}
english
处于选中状态。所以,isRTL is false
。因此,require('........bootstrap-rtl.css')
不是来玩的。现在,当我将语言更改为arabic
时,isRTL becomes true
和bootstrap-rtl.css
为required
。现在,当我再次将语言更改为rtl
.rtl
.时,我可以看到所有的语言,但是unrequired
不是unrequired
,所以我仍然可以看到所有的语言
有没有人能给我提个建议,我可以接受这个解决方案,甚至是替代方案。
发布于 2018-05-31 04:57:24
我不知道React require
的内容是否有什么特别之处,但一般来说,加载样式表基本上意味着插入一个引用它的<link>
元素。您可以通过删除引用样式表的元素来“卸载”样式表。您还可以通过将其rel
属性设置为"stylesheet“之外的其他属性来禁用它。
但任何更改都需要首先找到该元素。有点乱。
如果你想在RTL和LTR之间来回切换,有一种比“卸载”RTL CSS更好的方法。有一个叫做bootstrap-rtl-ondemand的bootstrap-rtl分支,它并不总是应用RTL样式,只在文档的方向设置为"rtl“时才应用它们。
安装上面的软件包(或者如果你不使用NPM,至少从软件包的Github repo中获取CSS文件),并进行设置,以便CSS在Bootstrap之后加载。
现在你基本上可以随意在RTL和LTR之间切换了。上面的方法就像下面这样简单:
componentWillReceiveProps(nextProps) {
if (this.props.isRTL !== nextProps.isRTL) {
document.documentElement.dir = (nextProps.isRTL) ? 'rtl' : 'ltr';
}
}
https://stackoverflow.com/questions/50611923
复制相似问题