首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >动态请求和UnRequire一个文件

动态请求和UnRequire一个文件
EN

Stack Overflow用户
提问于 2018-05-31 03:12:24
回答 1查看 598关注 0票数 0

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

我使用bootstrap-rtl来支持rtl。

下面是我的代码:

代码语言:javascript
复制
  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 truebootstrap-rtl.cssrequired。现在,当我再次将语言更改为rtl.
  • Now,,rtl.

时,我可以看到所有的语言,但是unrequired不是unrequired,所以我仍然可以看到所有的语言

有没有人能给我提个建议,我可以接受这个解决方案,甚至是替代方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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之间切换了。上面的方法就像下面这样简单:

代码语言:javascript
复制
  componentWillReceiveProps(nextProps) {
    if (this.props.isRTL !== nextProps.isRTL) {
      document.documentElement.dir = (nextProps.isRTL) ? 'rtl' : 'ltr';
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50611923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档