无法正确地将值从父母传递给孩子和孩子传递给父母

Posted

技术标签:

【中文标题】无法正确地将值从父母传递给孩子和孩子传递给父母【英文标题】:Can't pass value from parent to child and child to parent properly 【发布时间】:2020-07-22 19:30:52 【问题描述】:

首先,这是我目前的结构

父组件

    class Box extends Component 
        constructor()
            super()
            this.state=
                isLoginOpen: true,
                isRegisterOpen: false
            
        

        showLoginBox() 
            this.setState(
                isLoginOpen: true, 
                isRegisterOpen: false
            );
        

        showRegisterBox() 
        this.setState(
            isRegisterOpen: true, 
            isLoginOpen: false
        );
        
        render() 
            return  <div class="container-fluid w-100 full_div">
                <div class="container shadow">
                    <br/>
                    <br/>
                    <div class="row bg-white">
                        <div className="col-sm-6 "+ (this.state.isLoginOpen? "bg-secondary": "") 
                        >
                            <a onClick=()=>this.showLoginBox() class="login-tab text-dark" href="#"><p class="text-center font-weight-bold" style=fontSize: '25px'>Login</p></a>


        </div>
                    <div className="col-sm-6 "+ (this.state.isLoginOpen? "": "bg-secondary")>
                        <a onClick=()=>this.showRegisterBox() class="signup-tab text-dark" href="#"><p class="active text-center font-weight-bold" style=fontSize: '25px'>Sign Up</p></a>
                    </div>
                </div>
                <div class="col-md-6">
                    
                        this.state.isLoginOpen?
                        <LoginBox/>
                        : <RegisterBox/>
                    
                </div>
     

子组件

class RegisterBox extends Component 
    render() 
        return  <div>
                     <p style=marginTop: '40px'><a onclick="changeTab(this)" data-tab="login" className="login-tab text-dark" href="#">I already have an account</a></p> 
                    </div>;
     

我想将 isLoginOpen、isRegisterOpen 和 showRegisterBox 函数值传递给子组件。当我按下子组件上的 我已经有一个帐户 链接时,我想更改通过道具获得子组件的值并将其发送回父组件。我该怎么做?

【问题讨论】:

【参考方案1】:

Al Duncanson 但是现在出现了这个问题:'props' is not defined no-undef in RegisterBox.

【讨论】:

【参考方案2】:

您可以通过这样的道具将这些值传递给您的子组件

<RegisterBox
  isLoginOpen=this.state.isLoginOpen
  isRegisterOpen=this.state.isRegisterOpen
  showRegisterBox=this.showRegisterBox
/>

然后你可以像这样从子组件调用你的showRegisterBox()函数

onClick=() => props.showRegisterBox()

【讨论】:

我已经做到了。但是现在出现了这个问题: 'isLoginOpen' is not defined no-undef 'isRegisterOpen' is not defined no-undef 'showRegisterBox' is not defined 我更新了我的答案。你试过这样传递道具吗?

以上是关于无法正确地将值从父母传递给孩子和孩子传递给父母的主要内容,如果未能解决你的问题,请参考以下文章

ReactJS:在孩子和父母之间传递数据[重复]

Vue.js“超出最大调用堆栈大小”错误。将数据从父母传递给孩子失败

将父母作为孩子传递给函数c ++

将数据从孩子传递给祖父母

Vue - 将数据从孩子传递给父母 - 基本发射不起作用

React Native - 将父母的状态传递给孩子的麻烦