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

React常量不能调用2个不同的属性?

钱安和
2023-03-14

我对反应有点陌生,并试图制作一个带有弹出模态的响应式导航栏作为一个小项目,但是当我尝试在应用程序中调用 const 两次时.js它具有不同的属性,只有一个在应用程序中工作。我尝试删除工作的一个,另一个工作正常,唯一的问题是它们一起工作。

工具栏. js

import React from 'react';
import Logo from "../../img/DW_Logo.png";
import DrawerToggleButton from '../SideDrawer/DrawerToggleButton';
import './Toolbar.css';


const toolbar = props => (
<header className="toolbar">
    <nav className="toolbar_navigation">

        <div className="toolbar_logo">
            <a href="/"><img src={Logo} /></a>
        </div>
        <div className="spacer" />
        <div className="toolbar_navigation-items">
            <ul>
                <li><a href="/">About</a></li>
                <li><a onClick={props.popup}>News</a></li>
                <li className="sign_in"><a href="/">Sign In/ Login</a></li>
            </ul>
        </div>
        <div className="toolbar_toggle">
            <DrawerToggleButton click={props.drawerClickHandler} />
        </div>
    </nav>
</header>

);

export default toolbar;

如您所见,我有onClick={props.popup}以及单击={props.drawerClickHandler}

我试着用App.js

import React, { Component } from 'react';
import Toolbar from './header/Toolbar/Toolbar';
import SideDrawer from './header/SideDrawer/SideDrawer';
import Backdrop from './header/Backdrop/Backdrop';
import Modal from "./header/Modal/Modal";

class App extends Component {

  state = {
    sideDrawerOpen: false
  };
  state = {
    modalOpen: false
  };
  drawerToggleClickHandler = () => {
    this.setState((prevState) => {
      return {sideDrawerOpen: !prevState.sideDrawerOpen};
    });
  };

  modalClickHandler = () => {
    this.setState((prevState) => {
      return {modalOpen: !prevState.modalOpen};
    });
  };

  backdropClickHandler = () => {
    this.setState({sideDrawerOpen: false});
    this.setState({modalOpen: false});
  };

  render() {
    let backdrop;

    if (this.state.sideDrawerOpen) {
      backdrop = <Backdrop click={this.backdropClickHandler} />;
    }
    if (this.state.modalOpen) {
      backdrop = <Backdrop click={this.backdropClickHandler} />;
    }
    return (
      <div style={{height: '100%'}}>
        <Toolbar drawerClickHandler={this.drawerToggleClickHandler} />
        <Toolbar popup={this.modalClickHandler} />
        <SideDrawer show={this.state.sideDrawerOpen} />
        {backdrop}
        <Modal show={this.state.modalOpen}/>

        <main style={{marginTop: '64px'}}>
          <p>This is the page content!</p>
        </main> 
      </div>
    );
  }
}

export default App;

我正在根据我从教程中学到的侧抽屉构建这个模式,并遇到了这个我需要帮助理解和解决的障碍。


共有2个答案

臧烨烁
2023-03-14

看起来您设计的工具栏在一个组件中同时使用drawerClickHandler属性和弹出属性。

但是您渲染工具栏组件 2 次,并将单独的抽屉点击处理程序道具和弹出道具传递给它们。

我认为您应该只渲染一次工具栏,并传递drawerClickHandler属性和弹出属性。

例:

render () {
  return (
    <div style={{height: '100%'}}>
     <Toolbar drawerClickHandler={this.drawerToggleClickHandler} popup={this.modalClickHandler} />
     <SideDrawer show={this.state.sideDrawerOpen} />
     {backdrop}
     <Modal show={this.state.modalOpen}/>

    <main style={{marginTop: '64px'}}>
      <p>This is the page content!</p>
    </main> 
   </div>
  )
}
邵子平
2023-03-14

我认为这不是一个常数问题..,

<代码>

你应该添加一个组件两个道具…

return (
  <div style={{height: '100%'}}>
    <Toolbar drawerClickHandler={this.drawerToggleClickHandler} 
             popup={this.modalClickHandler}/>
    <SideDrawer show={this.state.sideDrawerOpen} />
    {backdrop}
    <Modal show={this.state.modalOpen}/>

    <main style={{marginTop: '64px'}}>
      <p>This is the page content!</p>
    </main> 
  </div>
);
 类似资料:
  • 假设我有以下几点 我无法指定要在每个子类中使用的服务实现。我已经考虑过使用@Qualifier,但是我必须在每个子类中重新声明属性并在那里使用它,并且希望它覆盖父类。 这些类的目的是同时提供API的两个版本。因此,这两个版本将同时处于活动状态。 从Spring是如何注入豆子的角度来看,这确实是一种反模式,所以我对其他方法持开放态度。

  • 问题内容: 我有以下代码在PDF内绘制垂直条形图和折线图。 如何将这2个图形保存在PDF的2个不同页面中。我看到可以使用- 但是,不是使用Canvas,而是使用其中 不存在方法的Drawing对象。 如何将2个图形保存在PDF的2个不同页面中?第二个图形(折线图)的右边与第一个图形(垂直条形图)重叠,从而阻碍了该条形图。 这是我的 代码。 问题答案: 制作画布并在其上渲染图形: 希望能帮助到你 :

  • 本周我开始使用,但我遇到了一个问题,无法理解字段。 我有一个a级是这样的: 当我在测试中使用时,我这样调用它: 但我想设置字符串属性!我是这样试的: 但是,测试抛出一个异常: MissingMethodInvocationException:when()需要一个必须是“mock上的方法调用”的参数。例如:when(mock.getarticles()).ThenReturn(articles);

  • 因此,我初始化了一个名为P1的对象,名称为“zach”,hp为100,损坏为20,我无法在其他地方访问这3个变量。这些不是玩家类中的私有变量,我说的是类中通过执行以下操作初始化的那些变量: 我想我可以在任何地方调用P1.health,如果它是公共的?感谢任何帮助,这是我的第一个基于文本的游戏机游戏,所以其他输入也很感谢。

  • 但后来我看到了另一种创建组件的方法。 嗯,我现在很困惑。在React中有什么标准的做事方式吗?