Javascript 动态要求和取消要求文件
我正在动态地改变语言,所以我想从rtl切换到ltr,反之亦然 我使用引导rtl来支持rtl 这是我的密码:Javascript 动态要求和取消要求文件,javascript,css,reactjs,require,right-to-left,Javascript,Css,Reactjs,Require,Right To Left,我正在动态地改变语言,所以我想从rtl切换到ltr,反之亦然 我使用引导rtl来支持rtl 这是我的密码: componentWillReceiveProps(nextProps) { if (this.props.isRTL !== nextProps.isRTL) { if (nextProps.isRTL) { require('bootstrap-rtl/dist/css/bootstrap-rtl.css'); } else {
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为false
无法发挥作用require(“……bootstrap rtl.css”)
- 现在,当我将语言更改为阿拉伯语时,
isRTL变为真,并且
是bootstrap rtl.css
。现在,我可以看到一切必需的
rtl
- 现在,当我再次将语言更改为
,english
,但是isRTL变为false
不是bootstrap rtl.css
,所以我仍然看到了所有不需要的
rtl
有人能给我推荐一个解决方案,甚至是替代方案吗?我不知道React
需要
的东西有什么特别之处,但一般来说,加载样式表基本上意味着插入一个引用它的
元素。您可以通过删除引用样式表的元素来“卸载”样式表。您还可以通过将其rel
属性设置为“样式表”之外的内容来禁用它
但任何改变都需要首先找到那个元素。有点乱
如果您希望能够从RTL切换到LTR,然后重新运行,有一种比“卸载”RTLCSS更好的方法。有一个称为rtl的引导分支,它不是始终应用rtl样式,而是仅当文档的方向设置为“rtl”时才应用它们
在上面安装软件包(或者如果不使用NPM,至少从软件包的githubrepo获取CSS文件),并进行设置,以便在引导后加载CSS
现在您可以随意在RTL和LTR之间切换。您的上述方法变得非常简单:
componentWillReceiveProps(nextProps) {
if (this.props.isRTL !== nextProps.isRTL) {
document.documentElement.dir = (nextProps.isRTL) ? 'rtl' : 'ltr';
}
}
可能重复的I-haven;我没有太多的反应,所以我在这里有点猜测。但是,当您在切换到阿拉伯语后使用开发工具检查页面时,您是否看到样式表中添加了
?(更重要的是,如果你删除它,会发生什么。)@Shadowfool很抱歉,你提供的链接已经被我尝试过了,但它不起作用。@cHao是的,我看到一个链接添加到文档的标题部分。如果我手动删除它,rtl就消失了,我得到了ltr。谢谢你的建议。你能告诉我下一步该做什么吗?谢谢你的回答。它的工作超出了我的想象。我将把编辑留给其他人来决定。我的经验告诉我,在这种情况下,在应用更改之前检查更改都不会产生显著的效果,但正如我所提到的,我并没有太多地干扰React:很高兴收到你的来信。:)