当前位置: 首页 > 面试题库 >

React:如何通知父母更改

毋宸
2023-03-14
问题内容

我正在尝试将Bootstrap包装到具有集成表单验证的组件中。

简短:假设我有

<Form>
  <FieldGroup>
     <Field rules={'required'}/>
  </FieldGroup>
</Form>

一旦Fieldpases验证,我怎么能通知FieldGroup(父节点)来添加一个类?

我在这里创建了一个简化的Codepen版本

我想根据验证状态,然后更改FieldGroup的状态,以便可以正确更改类名。(添加has-warning has- danger等),并最终将类添加到Form组件。


问题答案:

您需要将a传递callback给子组件。我只是分叉了您的Codepen,并添加了以下代码段。

http://codepen.io/andretw/pen/xRENee

这是主要概念, “父” 组件中创建 一个回调函数, 并将其传递给 “子” 组件

即子组件需要一个额外的道具来获取回调:

<Form>
  <FieldGroup>
     <Field rules={'required'} cb={yourCallbackFunc}/>
  </FieldGroup>
</Form>

<FieldGroup />(父母):

class FieldGroup extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      color: 'blue'
    }
  }

  cb (msg) {
    console.log('doing things here', msg)
  }

  render() { 
    const childrenWithProps = React.Children.map(this.props.children,
     child => React.cloneElement(child, {
       cb: this.cb
     })
    )
    return (
      <div class='fields-group'>
        <label> field </label>
        { childrenWithProps }
      </div>
    );
  }
};

<Field />(孩子):

class Field extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      empty: true
    }
    this.validate = this.validate.bind(this);
  }

  validate(e){
    let val = e.target.value;
    console.log(!val);
    this.setState({empty: !val});
    //here to notify parent to add a color style!

    // do call back here or you may no need to return.
    this.props.cb(val)

    return !val;
  }

  render() {
    return (
      <div>
        <input type='text' onBlur ={(event) => this.validate(event)}/>
        {this.state.empty && 'empty'}
      </div>
    );
  }
};

您可以在回调函数中执行所需的操作。(您还可以从回调传递<Form />给孙子并使它工作,但是您需要重新考虑它的设计是好是坏。)



 类似资料:
  • 我正在尝试像Android文档解释的那样从通知启动活动,但是当我打开通知然后按后退按钮时,Homeactive(父)不会打开,而是应用程序关闭。我做错了什么?

  • 问题内容: 我的结构如下所示: 组件3应该根据组件5的状态显示一些数据。由于道具是不可变的,我不能简单地将其状态保存在组件1中并转发它,对吗?是的,我已经阅读了有关redux的内容,但不想使用它。我希望有可能通过反应来解决。我错了吗? 问题答案: 对于孩子与父母的通信,您应该传递一个将状态从父母设置为孩子的函数,如下所示 这样,孩子可以通过调用通过props传递的函数来更新父母的状态。 但是您将不

  • 我刚刚开始使用ReactJs开发,并一直遵循serverless-stack.com教程。我已经准备好扩展应用程序并创建一个模板,带有n个子组件,但是在管理孙子组件之间的用户会话时遇到了麻烦。 我有管理用户会话的App.js。但是我在孙子组件中有我的注销按钮,我无法让它调用App.js signOut()函数。 App.js 我的布局组件有一系列不同的组件,如页眉、页脚、导航等。。 最后,我的Na

  • 我已使用zo0r/React本机推送通知在我的React本机应用程序上设置推送通知。它可以在Android系统上运行,当应用程序处于后台模式时,也可以在iOS上运行。 但是,当应用程序在iOS的前台模式下时,不会显示通知。我知道我必须在前台模式下处理通知,但我希望它们的显示方式与在后台模式下的显示方式完全相同。 所以我做了以下几件事: 但是什么都没发生,通知还是没有显示,我到底错过了什么?

  • 问题内容: 如何获得Python类的父类? 问题答案: 使用以下属性: 从文档: 类对象的基类的元组。 例: 另一个例子: