当前位置: 首页 > 面试题库 >

使用React.js在选项卡上切换类

裴心水
2023-03-14
问题内容

所以我有一个tab-component包含3个项目的项目:

React.DOM.ul( className: 'nav navbar-nav', 
    MenuItem( uid: 'home')
    MenuItem( uid: 'about')
    MenuItem( uid: 'contact)
)

在的.renderMenuItem

React.DOM.li( id : @props.uid, className: @activeClass, onClick: @handleClick,
    React.DOM.a( href: "#"+@props.uid, @props.uid)
)

每次单击某个项目时,都会调用一个骨干路由器,该骨干路由器将调用,而tab-component后者又将调用一个page-component

我仍在努力解决基本上存在单向数据流这一事实。而且我习惯直接操作DOM。

我想做的是将.active类添加到单击的选项卡中,并确保将其从非活动类中删除。

我所知道的CSS技巧,你可以使用data-属性和不同的造型适用于为属性truefalse

骨干路由器已经获取了变量uid并调用正确的页面。我只是不确定如何最好地在选项卡之间切换类,因为一次只能激活一个。

现在,我可以保留有关哪个选项卡被选中的记录,并对其进行切换等。但是React.js已经具有此记录保持功能。

@handleClick你看,我甚至不希望使用的,因为路由器应该告诉tab-component这些人给的className: '.active',我想避免的jQuery,因为React.js并不需要直接的DOM操作。

我已经使用@state尝试了一些方法,但是我确定有一种非常优雅的方法来实现此目标,我想我已经看过某人的演示文稿或视频。

我真的必须习惯于改变我的思维方式,以积极地思考React。

我只是在寻找一种最佳实践方式,所以我可以以一种非常笨拙的方式解决它,但是我喜欢React.js,因为它是如此的简单。


问题答案:

尽可能将状态推向更高的html" target="_blank">组件层次结构,并props在下面的所有级别上对不可变进行处理。将活动选项卡存储在您的设备中tab- component并从数据生成菜单项似乎很有意义(this.props在这种情况下),以减少代码重复:

以下示例的工作JSFiddle +骨干路由器: http

:
//jsfiddle.net/ssorallen/4G46g/

var TabComponent = React.createClass({
  getDefaultProps: function() {
    return {
      menuItems: [
        {uid: 'home'},
        {uid: 'about'},
        {uid: 'contact'}
      ]
    };
  },

  getInitialState: function() {
    return {
      activeMenuItemUid: 'home'
    };
  },

  setActiveMenuItem: function(uid) {
    this.setState({activeMenuItemUid: uid});
  },

  render: function() {
    var menuItems = this.props.menuItems.map(function(menuItem) {
      return (
        MenuItem({
          active: (this.state.activeMenuItemUid === menuItem.uid),
          key: menuItem.uid,
          onSelect: this.setActiveMenuItem,
          uid: menuItem.uid
        })
      );
    }.bind(this));

    return (
      React.DOM.ul({className: 'nav navbar-nav'}, menuItems)
    );
  }
});

除了附加类名和公开click事件外,MenuItem几乎无能为力:

var MenuItem = React.createClass({
  handleClick: function(event) {
    event.preventDefault();
    this.props.onSelect(this.props.uid);
  },
  render: function() {
    var className = this.props.active ? 'active' : null;

    return (
      React.DOM.li({className: className},
        React.DOM.a({href: "#" + this.props.uid, onClick: this.handleClick})
      )
    );
  }
});


 类似资料:
  • 我正在打开一个页面,执行一些操作,我正在使用这段代码在下一个选项卡中打开另一个链接 字符串url=“https://qa.logfireapps.com/lgf_700_qa_rf”; String args1=String.format(“window.open(”%s“,”%s“);”,url,“new”); ((JavascriptExecutor)driver).ExecuteScript

  • 我写了示例代码,但它不起作用。还观察到2个选项卡只有1个窗口句柄。如何再次切换到父页签?

  • 将Selenium WebDriver与Java结合使用。我正在尝试自动化一个功能,其中我必须打开一个新的选项卡,在那里做一些操作,并回到以前的选项卡(父)。我用了开关手柄,但它不起作用。还有一件奇怪的事情,两个选项卡有相同的窗口句柄,因此我不能在选项卡之间切换。 然而,当我尝试使用不同的Firefox窗口时,它都能工作,但是对于tab它就不行了。 请帮帮我.我如何切换标签。或者我如何切换选项卡而

  • 本文向大家介绍vue实现选项卡及选项卡切换效果,包括了vue实现选项卡及选项卡切换效果的使用技巧和注意事项,需要的朋友参考一下 这里不跟大家再去把Vue文档上的一些指令用法或者基础知识再复述一遍,既然是从入门到实战,我直接将平时项目中需要实现的一些效果拆分成模块。你们遇到了相关的指令或者不知道怎么用的方法自己对着文档去查,再回过头来看我的实现代码。记住,通读Vue文档真的很重要,很重要! 这里的V

  • 问题内容: 在JAVA中使用Selenium WebDriver。我试图自动执行一项功能,在该功能中我必须打开一个新选项卡,然后在此处执行一些操作,然后返回到上一个选项卡(父项)。我使用了开关手柄,但无法正常工作。奇怪的是,两个选项卡具有相同的窗口句柄,因此我无法在两个选项卡之间切换。 但是,当我尝试使用其他Firefox窗口时,它可以工作,但是对于选项卡,它却无法工作。 请帮助我如何切换标签。或

  • 本文向大家介绍使用javascript实现简单的选项卡切换,包括了使用javascript实现简单的选项卡切换的使用技巧和注意事项,需要的朋友参考一下 代码相当简洁、简单易懂,就不多废话了。 直接奉上代码: ------demo.js--------------- 是不是很简单就实现了选项卡的切换效果呢,小伙伴们自己美化下就可以用到自己项目中去了。