当前位置: 首页 > 知识库问答 >
问题:

添加

萧晓博
2023-03-14

我是新来的反应。我有几个按钮在按钮组:

<div className="btn-group">
    <button className="btn btn-mini btn-default" onClick={() => this.changeDataType("type1")} >Button1</button>
    <button className="btn btn-mini btn-default" onClick={() => this.changeDataType("type2")} >Button2</button>
    <button className="btn btn-mini btn-default" onClick={() => this.changeDataType("type3")} >Button3</button>
</div>

每当用户点击其中一个按钮时,该按钮应该成为活动的、选定的按钮。我发现我需要将CSS类active添加到相应的按钮中,但我不确定如何实现这一点。

我想了一会儿。我有一个changeDataType函数连接到我的按钮,我在其中做一些其他事情。那么,在那里,我会以某种方式操纵CSS吗?

所以我想我的问题是,第一,如何定位我需要定位的按钮,第二,如何使用React更改按钮的CSS。

共有3个答案

曹旭
2023-03-14

我是如何做到这一点的:

//聊天室页面组件

function ChatRoomPage() {

 const [showActionDropdown, setShowActionDropdown] = useState('hide');

  function showActionDropdownHandler(){
    console.log("clicked")
    if(showActionDropdown=='hide')
      setShowActionDropdown('show')
    else
      setShowActionDropdown('hide')

  }


 return (

    <div>

           <button onClick={ () => showActionDropdownHandler() } className="btn " type="button">Actions</button>

        <div className={`action_menu ${showActionDropdown}`}>
          ...
        </div>

   </div>
 );

}
export default ChatRoomPage;
孙胜泫
2023-03-14

有一个很好的实用程序,你可以用它来连接类名逻辑

https://github.com/JedWatson/classnames

基于为活动设置React状态,您可以执行以下操作。你可以把逻辑变得尽可能复杂。如果逻辑结果错误,则该键将不包括在输出中。

var classNames = require('classnames');

var Button = React.createClass({
  // ...
  render () {
    var btnClass = classNames({
      btn: true,
     'btn-active': this.state.isActive
    });
    return <button className={btnClass}>{this.props.label}</button>;
  }
});
高飞翮
2023-03-14

在反应状态变化时再进行反应渲染。在你的情况下,如果你想改变一些东西的外观,那么你可能想强制另一个渲染。您可以做的是让class Name成为状态的一部分,然后在需要时更新状态,使组件使用新的class Name重新呈现。例如:

constructor() {
    super();
    this.state = {
        className: 'btn'
    }
}

render () {
    return (
        <Button className={this.state.className}>Click me</Button>
    )
}

由于类名绑定到状态,更新状态将导致按钮使用新的类名再次呈现。可以这样做:

updateClass() {
    let className = this.state.className;
    className = className + ' ' + 'btn-primary'
    this.setState({className})
}

这是一个函数示例,您可以在单击按钮时调用该函数并更新该按钮的class Name

 类似资料:
  • 问题内容: 在我的表我有,列。 示例:和 如何将此列添加到我的列中,这样我就可以 我尝试了这个: 但它不起作用。 谢谢你,史蒂夫 问题答案: 据我了解,您想将前两位数字添加为小时,将后两位数字添加为分钟-但您并未在通话中执行此操作- 您要将两个部分都添加为-请尝试以下操作: 在这里,我使用了两个嵌套-内部添加小时,外部添加分钟到添加小时的结果上。 另外:在SQL Server中是 基于1的 ,例如

  • 我正在尝试为我的设置屏幕实现android jetpack首选项。一切正常,当我单击MultiSelectListPreference时,它会显示条目列表,但我没有什么问题, 为什么entryValues不能是整数数组?(字符串数组工作正常) 如何设置默认值?对于EG:我想在开始时将第二个和第三个条目设置为默认勾选。 下面是我的pref.xml文件的一部分 如果我将arrays.xml文件中的设置

  • Table of Contents  目录 append 添加 append_by_ref 引用添加 assign 赋值 assign_by_ref 引用赋值 clear_all_assign 清除所有赋值 clear_all_cache 清除所有缓存 clear_assign 清除赋值 clear_cache 清除缓存 clear_compiled_tpl 清除已编译模板 clear_confi

  • 在conf/ioc目录下添加ehcache.js, 作用是将Ehcache声明为一个bean,这样其他模块/Service就能使用它了 请注意看注释!!!!! var ioc = { "cacheManager" : { "type" : "net.sf.ehcache.CacheManager", "factory" : "net.

  • Ehcache自带一个默认配置,但我们需要命名这个配置,所以,在conf目录下建一个ehcache.xml <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false" monitoring=

  • 添加一个类net.wendal.nutzbook.shiro.realm.SimpleAuthorizingRealm package net.wendal.nutzbook.shiro.realm; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.Authenticatio