Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态要求和取消要求文件_Javascript_Css_Reactjs_Require_Right To Left - Fatal编程技术网

Javascript 动态要求和取消要求文件

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 {

我正在动态地改变语言,所以我想从rtl切换到ltr,反之亦然

我使用引导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为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:很高兴收到你的来信。:)