javascript - 如何区分点击处理程序?

标签 javascript reactjs

我有一个导航类组件,我想在单击“关于”或“联系人”后在其中使用模态。 我使用更改状态然后打开模式的事件处理程序,但我不知道如何区分“关于”和“联系”之间的点击以打开不同的模式。有帮助吗?

class Navbar extends Component {
    state = {
        clicked: false
    }

    clickHandler = (event) => {
        event.preventDefault();
        //console.log('clicked!');
        this.setState({clicked: true});   
    }

    render () {
        const aboutClick = (<a href='/' onClick={this.clickHandler}>About</a>);
        const contactClick = (<a href='/' onClick={this.clickHandler}>Contact</a>);
        
        const modalAbout = (<Modal show={this.state.clicked}><About /></Modal>);
        const modalContact = (<Modal show={this.state.clicked}><Contact /></Modal>);

        const modal = aboutClick ? modalAbout : modalContact;

        return (
            <div>
                {modal}      
                <ul className='Navbar'>
                    <li>{aboutClick}</li>
                    <li>{contactClick}</li>
                    <li><NavLink to={'/admin'}>Admin</NavLink></li>
                </ul>
            </div>
        );
    }        
}   
export default Navbar;

最佳答案

您可以柯里化(Currying)一个消除歧义的值。

clickHandler = (value) => (event) => {
  event.preventDefault();

  if (value === 'about') {
    // do about stuff
  }
  if (value === 'contact') {
    // do contact stuff
  }       

  this.setState({clicked: true});   
}

...

const aboutClick = (<a href='/' onClick={this.clickHandler('about')}>About</a>);
const contactClick = (<a href='/' onClick={this.clickHandler('contact')}>Contact</a>);

关于javascript - 如何区分点击处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66929570/

相关文章:

javascript - 当文本框的内容发生变化时如何执行操作?

javascript - 两个不同 View 上的两个按钮调用相同的函数,angularjs

javascript - 可重复使用的 Canvas 代码?

javascript - 如何在 Redux 中创建 Dynamic Reducer

reactjs - 如何在 Cypress 中测试 React Material UI Drawer 组件属性值

javascript - 如何使用 React JS 围绕 Material UI 组件编写包装器?

javascript - 在 v-model 中使用条件运算符?

javascript - 将 Prop 传递给包装在 withRouter() 函数中的 react 组件

reactjs - React Native + Amplify S3 示例

unit-testing - Jest 错误: Test suite failed to run,如何解决?