首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React循环组件通信

React循环组件通信
EN

Stack Overflow用户
提问于 2015-06-30 20:00:51
回答 1查看 110关注 0票数 0

假设我有一个循环,它在每次迭代中呈现两个组件。告诉Component1 (并将数据传递给它,重新呈现Component1) Component2被点击的最有效方法是什么?即:

代码语言:javascript
复制
render(){
    return (
        this.props.data.map((data) => {
            <Component1 data={data} />
            <div>
                <Component1> // this one should also know Component2 changed
            </div>
            <Component2 data={data} click={doSomethingWithComponent1} />
        })
    );
}

Pubsub不是我可以使用的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2015-06-30 21:01:51

宽泛的问题。有两种可能的答案,a)传递一个函数并使用父函数包装,b)使用Flux。

使用Flux,您可以让Component2触发一个操作,让存储知道数据已经更改,因此侦听该存储的所有组件都将自动更新。

下面是如何通过传递函数和包装父函数来完成此操作的:

代码语言:javascript
复制
var Hello = React.createClass({
    render: function() {
        return <div>Hello {this.props.name}</div>;
    }
});

var Goodbye = React.createClass({
    render: function() {
        return <div>Goodbye {this.props.name} <p onClick={this.props.clickMe}>Click me!</p></div>;
    }
});

var Parent = React.createClass({
    getInitialState: function () {
        return {
            name: 'Unknown user'
        };
    },
    passMe: function () {
        this.setState({name: 'User with name!'});
    },
    render: function() {
        return (<div>
            <Hello name={this.state.name} />
            <Goodbye name={this.state.name} clickMe={this.passMe} />
        </div>);
    }
});

这是给你的Fiddle playground

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31137711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档