React - 单击更改CSS属性(箭头功能)

Geo*_*der 6 html javascript css reactjs gatsby

我的React/Gatsby文件中有以下内容:

import React from "react"

const click = () => {
  console.log("J");
}

const NavButton = () => 
  <button className="navbar-toggler navbar-toggler-right" style={{backgroundColor: 'blue', position: "absolute", margin: "30px"}}type="button" data-toggle="collapse" data-target="#collapsingNavbar" onClick={click}>
    <div id="nav-icon1">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </button>

const Dropdown = () => 
<div style={{visibility: "hidden", backgroundColor: "blue", position: "absolute", height: "100%", width: "100%"}}>
</div>

export default (props) =>
  <div className="left col-xs-12 col-md-6">
    <Dropdown />
    <NavButton />
    {props.children}
  </div>
Run Code Online (Sandbox Code Playgroud)

现在我想click()在有人按下时发射NavButton,然后我想让它Dropdown可见.我该怎么做?现在,我已经是硬编码是Dropdownstyle={{visibility: "hidden", ....

我也想知道我是否正确地做这件事,在这些不同的功能中松散地拥有一切,如果有人能告诉我那将是伟大的!

Bra*_*don 9

您的控制类需要是有状态的:它需要保持关于下拉列表是打开还是关闭的布尔状态.渲染下拉列表时,如果布尔值打开,那么您将显示下拉列表,否则您将不会.

这是为了执行此操作而重写的代码.请注意,子组件将props作为参数.这就是父母与他们沟通的方式.其中一些道具是回调,这是孩子与父母沟通的方式.

import React from "react"

const NavButton = ({onClick}) => 
  <button className="navbar-toggler navbar-toggler-right" style={{backgroundColor: 'blue', position: "absolute", margin: "30px"}}type="button" data-toggle="collapse" data-target="#collapsingNavbar" onClick={onClick}>
    <div id="nav-icon1">
      <span></span>
      <span></span>
      <span></span>
    </div>
  </button>

const Dropdown = ({show}) => 
<div style={{visibility: show ? "visible" : "hidden", backgroundColor: "blue", position: "absolute", height: "100%", width: "100%"}}>
</div>

export default class Parent extends React.Component {
  state = {
    dropdownVisible: false,
  };

  // toggles the dropdown each time it is called
  toggleDropdown = () => this.setState(state => ({
    dropdownVisible: !state.dropdownVisible,
  }));

  render() {
    return (
      <div className="left col-xs-12 col-md-6">
        <Dropdown show={this.state.dropdownVisible} />
        <NavButton onClick={this.toggleDropdown} />
        {this.props.children}
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)