如何在 React DOM 中显示模态框?

How can I show Modal box in react DOM?

我在 DOM 中显示模态框时遇到问题,我有 3 个组件:Navbar 和 Modal 作为子项,Shopping 作为父项,我在购物时调用 Modal 和 Navbar,我想在以下时间显示模态框我在导航栏上点击了一个跨度,它不能正常工作,你能帮帮我吗? 购物鳕鱼是:

class Shopping extends React.Component {
state = {
    products: {
        1: 0,
        2: 0,
        3: 0,
        4: 0,
        5: 0,
        6: 0,
    },
           addCounter: 0,
    purchased: false,
}

addProductHandler = (id, title, price) => {
    // Count
    const prevCount = this.state.addCounter
    const updatedCount = prevCount + 1
    this.setState({ totalPrice: newPrice, addCounter: updatedCount })
}

showModalHandler = () => {
    this.setState({ purchased: true })
}


render() {
    return (
        <Wrapper>
            <Navbar
                counter={this.state.addCounter}
                showModal={this.showModalHandler}
            />
            <Modal show={this.state.purchased} />
            <Control addProduct={this.addProductHandler} />
        </Wrapper>
    )
}

}

导出默认购物

Navbar Cod 是:

const Navbar = (props) => {
return (
    <header className="header">
        <nav>
            <ul className="nav-items">
                <li className="nav-item"><a href="/">Home</a></li>
                <li className="nav-item"><a href="/">Products</a></li>
                <li className="nav-item"><a href="/">Contact Us</a></li>
            </ul>
        </nav>
        <a href="#"><i className="fas fa-shopping-cart shopping-cart"></i></a>
        <span className="counter" onClick={() => props.showModal}>Orders: {props.counter}</span>
    </header>
)

}

导出默认导航栏

模态代码为:

const Modal = (props) => {
return (
    <Wrapper>
        <div className="modal"
            style={{
                transform: props.show ? 'translateY(0)' : 'translateY(-100vh)',
                opacity: props.show ? '1' : '0',
            }}
        >
            <p>Hello Modal</p>
        </div>
    </Wrapper>
)

}

导出默认模态

showModal 函数未被调用。 叫它

onClick={props.showModal}

onClick={() => props.showModal()}

使用箭头函数时,您必须调用相应的函数。您错过了添加函数括号:

onClick={() => props.showModal()}

或者您可以使用其中任何一种方式。

使用绑定():

onClick={props.showModal.bind(this)}

或通过引用:

onClick={props.showModal}

Demo