【发布时间】:2019-11-03 20:29:29
【问题描述】:
我正在尝试显示/隐藏一个组件,它是 ItemMain,并且使用另一个组件 NavLogoNew 中的按钮导入到主 App 组件。我尝试以多种不同的方式执行此操作,但看起来按钮不知道它是否被单击,当我手动更改真/假时它可以工作。在网络上,我发现了很多关于只涉及两个组件的情况的东西,但没有这样的。我的代码:
应用程序
import React from 'react';
import './App.css';
import { tsPropertySignature } from '@babel/types';
import { statement } from '@babel/template';
import NavBar from './../Components/Navigation/NavBar/NavBar.js';
import ItemMain from './../Components/Item/ItemMain/ItemMain.js';
import ItemList from './../Components/Item/ItemList/ItemList.js';
import NavButtonTop from './../Components/Navigation/NavButton/NavButtonTop/NavButtonTop.js';
import NavLogoNew from './../Components/Navigation/NavButton/NavButtonNew/NavLogoNew.js';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: false
};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({
visible: !this.visible
})
}
render() {
return (
<div className="App">
<NavBar />
{this.state.visible ? <ItemMain /> : null}
<ItemList />
<NavButtonTop name='UP'/>
</div>
);
}
}
export default App;
NavLogoNew:
import React from 'react';
import './NavLogoNew.css';
import ItemMain from './../../../Item/ItemMain/ItemMain.js'
class NavLogoNew extends React.Component {
render() {
return (
<button
className='NavLogoNew'
onClick={this.props.click}
>
{this.props.name}
</button>
);
}
}
export default NavLogoNew;
【问题讨论】:
-
您没有在主应用程序中使用
NavLogoNew,您只需将其导入即可。为了更好的可读性,将click属性名称更改为onClick,然后像这样使用它:<NavLogoNew name="Some Name" onClick={this.handleClick}/> -
您的 handleClick 函数缺少一些东西 handleClick() { this.setState({ visible: !this.visible }) }
-
AfikDeri - 导入是尝试以不同方式进行操作的剩余部分。
是 的一部分,所以我不能单独导入它。
标签: javascript reactjs react-component