美文网首页Front End
[React] 子组件向父组件通信:回调函数

[React] 子组件向父组件通信:回调函数

作者: 何幻 | 来源:发表于2016-12-21 11:43 被阅读369次

1. 组件间数据通信的单向性

React组件之间的是彼此独立的,组件间的数据流动是单向的,父组件向子组件通信是最常见的方法,父组件通过props向子组件传递需要的信息。

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

const SubComp = ({myProp, myText}) => (
    <span data-myProp={myProp}>{myText}</span>
);

const Page = ({pageProp, pageText}) => (
    <SubComp myProp={pageProp} myText={`myText: ${pageText}`} />
);

ReactDOM.render(
    <Page pageProp={1} pageText={'2'} />,
    document.getElementById('page')
);

2. 子组件向父组件通信

在React中,子组件向父组件通信时,可以使用回调函数,或者自定义事件。
在简单的场景中,回调函数常用的办法。

import React, { Component } from 'react';
import ReactDOM from 'react-dom';

const SubComp = ({myProp, myText, setParentState}) => (
    <input type="button"
        data-myProp={myProp}
        onClick={() => setParentState({ text: +new Date })}
        value={myText} />
);

class Page extends Component {
    constructor(props) {
        super(props);

        this.state = {
            text: 1
        };

        this.setParentState = this.setState.bind(this);
    }

    render() {
        return (
            <SubComp
                myProp={this.props.pageProp}
                myText={`myText: ${this.state.text}`}
                setParentState={this.setParentState} />
        );
    }
}

ReactDOM.render(
    <Page pageProp={1} pageText={'2'} />,
    document.getElementById('page')
);

注:
(1)setState是一个异步方法,一个生命周期内所有的setState方法会合并操作。
componentWillMount中执行setState方法,组件会更新state,但是组件只渲染一次。
因此,这是无意义的执行,初始化时的state,都可以放在this.state={...}中。

(2)原生组件的自定义属性应该加上'data-'前缀,React组件则不需要。

<span myProp={myProp}>{myText}</span>
Warning: Unknown prop `myProp` on <span> tag. Remove this prop from the element.

参考

深入React技术栈 - P74~P75

相关文章

  • uniapp 父组件与 renderjs 子组件通信

    父组件向子组件通信 使用 prop 传递数据,子组件监听数据变化 子组件向子组件通信 父组件创建回调函数,子组件特...

  • react父子组件通信

    父组件向子组件通信 回调函数 直接把函数传到组件里面,然后组件里面调用this.props.goDetail函数来...

  • 2019-05-01 React组件通信

    父子 父子通信(回调函数)[组件通信] 父传子:父组件传一个函数给子组件,子组件在恰当的时候调用 子传父:1.父组...

  • react里面父子组件通讯

    一、父组件 二、子组件 三、父组件通过props向子组件传递参数,子组件通过调用父组件的回调函数callback并...

  • [React] 子组件向父组件通信:回调函数

    1. 组件间数据通信的单向性 React组件之间的是彼此独立的,组件间的数据流动是单向的,父组件向子组件通信是最常...

  • vue、react对比

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

  • ReactNative组件间的通信

    父组件向子组件通信 父组件向子组件传值 父组件向子组件传递方法 子组件向父组件通信 子组件向父组件传值 子组件向父...

  • Angular5 父子组件之间的通信

    一、父组件向子组件通信 父组件: 子组件: 二、子组件向父组件通信 父组件: 子组件:

  • 不同场景下组件的数据通信

    父子组件的数据通信 1.父组件传递数据给子组件(props) 2.子组件传递数据给父组件 (回调函数) {{par...

  • 总结

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

网友评论

    本文标题:[React] 子组件向父组件通信:回调函数

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