美文网首页
React组件之间的通讯

React组件之间的通讯

作者: 魔仙堡下的老仙女 | 来源:发表于2017-11-08 15:26 被阅读0次

在 React 中,UI 以组件的形式来搭建,组件之间可以嵌套组合。另,React 中组件间通信的数据流是单向的,顶层组件可以通过 props 属性向下层组件传递数据,而下层组件不能向上层组件传递数据,兄弟组件之间同样不能。这样简单的单向数据流支撑起了 React 中的数据可控性。

然而在我们的开发中会有一些特殊的需求,需要子组件控制父组件的状态,或者无关系组件之间的通信。那么,更全面的组件间通信形式该怎么实现呢?

子父组件
需要父组件给子组件一个方法去修改自己的数据,子组件里边调用父组件的方法修改数据

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!-- 核心 -->
  <script src="../build/react.min.js"></script>
  <!-- 渲染dom -->
  <script src="../build/react-dom.min.js"></script>
  <!-- 把jsx、es6转换成js、es5 -->
  <script src="../build/browser.min.js"></script>
</head>
<body>
  <div id="root"></div>
</body>
<script type="text/babel">
  var Button = React.createClass({
    changeNumber:function () {
      this.props.add()
    },
    render:function () {
      return (
        <div>
          <p onClick={this.changeNumber}>子组件按钮++</p>
        </div>
      )
    }
  })
  var Box = React.createClass({
    getInitialState:function () {
      return{
        number:1
      }
    },
    addNumber:function () {
      this.setState({
        number:this.state.number+1
      })
    },
    render:function () {
      return (
        <div>
          <p>数量:{this.state.number}</p>
          <button onClick={this.addNumber}>按钮++</button>
          <Button add={this.addNumber}/>
        </div>
      )
    }
  })
  ReactDOM.render(<Box/>,document.getElementById("root"))
</script>
</html>

兄弟组件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <!-- 核心 -->
  <script src="../build/react.min.js"></script>
  <!-- 渲染dom -->
  <script src="../build/react-dom.min.js"></script>
  <!-- 把jsx、es6转换成js、es5 -->
  <script src="../build/browser.min.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel">
  var Text = React.createClass({
    render:function () {
      return (
        <p>{this.props.children}</p>
      )
    }
  });
  var Btn = React.createClass({
    ChangeNumber:function () {
      this.props.add()
    },
    render:function () {
      return(
        <p onClick={this.ChangeNumber}>{this.props.children}</p>
      )
    }
  });
  var Box = React.createClass({
    getInitialState:function () {
      return{
        number:1
      }
    },
    addNumber:function () {
      this.setState({
          number:this.state.number+1
        }
      )
    },
    render:function () {
      return (
        <div>
          <Text>数量:{this.state.number}</Text>
          <Btn add={this.addNumber}>按钮</Btn>
        </div>
      )
    }
  });
  ReactDOM.render(<Box/>,document.getElementById("root"))
</script>
</html>

相关文章

  • React组件之间的通讯

    在 React 中,UI 以组件的形式来搭建,组件之间可以嵌套组合。另,React 中组件间通信的数据流是单向的,...

  • react组件之间的通讯

    背景故事很简单:父组件对子组件传递信息,直接使用props即可;子组建对父组件传递信息,参考自React 组件之间...

  • 【react】父子组件之间通讯props

    实现父子组件双向数据流整体的思路是: 1,父组件可以向子组件传递props,props中带有初始化子组件的数据,还...

  • react组件通信

    react组件通信是一个常用功能,在做react项目中经常遇到 React组件层级关系 在了解Reat组件通讯之前...

  • react组件之间的通信

    今天来看一下react组件之间是怎么进行通讯的。react推崇的是单向数据流,自上而下进行数据的传递,但是由下而上...

  • react父子通讯

    父子通讯父传数据给子,子传数据给父 react组件class 组件名 extends React.Componen...

  • vue页面和component组件之间双向通讯(续1)

    VUE中父组件、子组件之间的双向通讯可以参见笔者的《vue页面和component组件之间双向通讯[https:/...

  • react组件间通信

    处理 React 组件之间的交流方式,主要取决于组件之间的关系,然而这些关系的约定人就是你。 React 组件之间...

  • react子组件向父组件传值

    相关资料:react 父组件怎么获取子组件的这个值React组件间信息传递方式react同级组件之间传值 • 父...

  • react 问题 更新。。。。

    刚接触react 还不太熟,碰到了一些问题,记录下 子组件与父组件之间的通讯: 在网站设计中,网站头部可以共用,所...

网友评论

      本文标题:React组件之间的通讯

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