【问题标题】:How to pass a click handler to a child component如何将点击处理程序传递给子组件
【发布时间】:2019-12-11 19:53:06
【问题描述】:

我正在尝试将点击处理函数传递给子组件,但我不知道为什么它不起作用。

我尝试将我的点击处理程序变成一个 lambda 函数,将它绑定到父组件,并将我在子组件中的 onClick 变成一个 lambda 函数,但似乎没有任何效果。

父组件

import React from 'react';
import NavMenuButton from './navMenuButton.js';

export default class NavBar extends React.Component {
    constructor(props) {
        super(props);

        this.state = {
            navBarOpen: true
        };
        this.toggleNavbar = this.toggleNavbar.bind(this);
    }

    toggleNavbar() {
        console.log('Toggled!');
        this.setState({
            navBarOpen: this.state.navBarOpen ? false : true
        });
    }

    render() {
        return (
            <NavMenuButton
                handleClick={this.toggleNavBar}
                navBarOpen={this.state.navBarOpen}
            />
        );
    }
}

子组件

import React from 'react';

export default class NavMenuButton extends React.Component{
    constructor(props){
        super(props)
    }

    render(){

        const styles = {
            navButton: this.props.navBarOpen 
            ? {fontSize:26, cursor:'pointer', userSelect:'none'} 
            : {fontSize:26, cursor:'pointer', userSelect:'none'}
        }

        return(
            <div>
                <span
                    style={styles.navButton} 
                    onClick={this.props.handleClick}
                    >
                    {'\u2630'}
                </span>
                {this.props.navBarOpen 
                 ? <p>its open</p>
                 : <p>its closed</p>}
            </div>
        );
    }
}

这个配置是我认为应该工作的,但是如果我将 navMenuButton 中的道具记录到控制台,handleClick 是未定义的,这真的让我感到困惑

【问题讨论】:

    标签: javascript reactjs


    【解决方案1】:

    toggleNavBar !== toggleNavbar - 区分大小写非常重要:)

    【讨论】:

    • 我现在真的很难受。我花了大约 3 天的时间才终于发布了一些东西,而这只是拼写。猜猜这是一个很好的教训,真正注意你输入的所有内容。谢谢
    • 是的,投资可靠的 IDE 也是一个好主意。 WebStorm 会为您解决这个问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2021-06-29
    • 2018-10-24
    • 2021-12-30
    相关资源
    最近更新 更多