美文网首页
react:父—>子通信

react:父—>子通信

作者: codingQi | 来源:发表于2019-02-28 17:00 被阅读0次

很熟悉子组件通过props来调用父组件的方法;
先看一下这个页面功能:现在需要用到父组件调用子组件的方法,基于这个功能,做一个优化,简单介绍下:

  1. 父组件实现的功能
    (1)点击确定,获取子组件的选中数据;
    (2)点击取消,弹框关闭;
  2. 子组件实现的功能
    (1)选中条例的状态变化,并渲染出来

页面显示如下:


image.png

优化目的:父组件关闭弹框的同时,将子组件的数据全部还原不选中
思考:因为数据是在子组件控制并改变的,因此改动也需要在子组件改变并渲染,所以,需要子组件暴露出来一个方法,专门清除或重置子组件选中,供父组件调用。
用到的思想:通过把子组件的this实例绑定在父组件的一个属性上,如:this.child
实现

// AddModal父组件

  // 关闭弹框
  onCancel = () => {
        const { form: { resetFields }, closeModal } = this.props;
        closeModal();
        resetFields();
        this.child.resetAllCatalog();
  }
  // 传给子组件的方法:获取子组件this实例
  onRef = ref => {
        this.child = ref;
  }
  render() {
      return (
              <FormItem
              {...formItemLayout}
              label='产品名称'
              >
                   {
                        getFieldDecorator('catalogIds')(
                              <CheckboxCom allCatalog={allCatalog} onRef={this.onRef} />
                          )
                    }
                </FormItem>
      );
  }

// CheckBox子组件

componentDidMount() {
        // 必写,将this传给父组件的onRef方法
        this.props.onRef(this);
    }
    // 清除、重置选中
    resetAllCatalog = () => {
        const { allCatalog } = this.props;
        let newAllCatalog = allCatalog.map(item => {
            item.isChecked = false;
            return item;
        });
        this.setState({
            allCatalog: newAllCatalog, // 初始化渲染的最终数据
            indeterminateAll: false,
            checkedAll: false
        });
    }

相关文章

  • react通信

    通信的几种方式 一般来说,react里边有几种常用的方式:父到子,子到父,兄弟组件之间的通信。 ===== 父向子...

  • react:父—>子通信

    很熟悉子组件通过props来调用父组件的方法;先看一下这个页面功能:现在需要用到父组件调用子组件的方法,基于这个功...

  • vue、react对比

    一、父子通信 1. 父组件通过props向子组件传值 vue:父组件 子组件接收 react:父组件: 子组件: ...

  • React-组件之间的通信

    在开发过程中,经常会遇到父组件和子组件之间相互通信,React子组件和父组件通信包括以下几个方面: 子组件向父组件...

  • 总结

    React组件之间的通信方式 1.父组件向子组件通信 React数据流动是单向的,通过props传递 2.子组件向...

  • React 笔记摘要

    父子组件数据通信 父子组件之间的数据通信细分其实还有两种:父与子之间和子与父之间。 在React中,父与子之间的数...

  • react-父子组件间通信

    React-父子组件间通信 父组件传 值 给子组件, 传 方法 给子组件 子组件接收 值 ,触发父组件的 方法

  • React、Vue、小程序子父组件传值通信大比较

    今天我们来谈谈在react、vue、小程序中是如何实现子父组件之间的传值通信的 React 父传子 直接通过pro...

  • React父子组件间通信的实现方式

    React学习笔记之父子组件间通信的实现:今天弄清楚了父子组件间通信是怎么实现的。父组件向子组件通信是通过向子组件...

  • react组件之间的通信

    本文首发于公众号【一个老码农】 react组件之间的通信,大致可以分为以下几类 父传子 子传父 兄弟组件之间的通信...

网友评论

      本文标题:react:父—>子通信

      本文链接:https://www.haomeiwen.com/subject/xzxkuqtx.html