Reactjs 将数据从一个组件传递到另一个没有父子关系的组件

Reactjs 将数据从一个组件传递到另一个没有父子关系的组件,reactjs,Reactjs,这里是我的两个组件。 组件1: var Main = React.createClass({ getInitialState: function(){ return{ data: [], values:[], childRecord:[] }; }, componentDidMount: function(){ $.ajax({ url: "data.json", dataType: 'json',

这里是我的两个组件。 组件1:

var Main = React.createClass({
    getInitialState: function(){
    return{
    data: [],
    values:[],
    childRecord:[]
    };
    },
    componentDidMount: function(){
    $.ajax({
    url: "data.json",
    dataType: 'json',
    success: function(data) {
    this.setState({data: data});
    }.bind(this),
    error: function(xhr, status, err) {
    console.error(this.props.url, status, err.toString());
    }.bind(this)
    });
    render: function() {
    var that = this,
    data = this.state.data;
    if(this.state.data.length > 0) {
        data = this.state.data[0].values;
        data = this.state.data[0].values[0].children;
    }
    var data = this.state.data;
    if(this.state.data.length > 0) {
        data = this.state.data[0].values;
    }
    var nestedData = data.map(function(Record, id) {
     return(
            <Tile key={id} data={Record} child={data}/>
         );
    });
    return (
        <div className="row main-container">
         {nestedData}
        </div>
       );
     }
    });

    *Component 2:*

    var Tile=React.createClass({
    render:function(){
    return(
    <div className="row">
    <div className="tileForm">
    <h3>{this.props.data}</h3>
    </div>
    </div>
    );
    }
   });
var Main=React.createClass({
getInitialState:函数(){
返回{
数据:[],
值:[],
儿童记录:[]
};
},
componentDidMount:function(){
$.ajax({
url:“data.json”,
数据类型:“json”,
成功:功能(数据){
this.setState({data:data});
}.绑定(此),
错误:函数(xhr、状态、错误){
console.error(this.props.url,status,err.toString());
}.绑定(此)
});
render:function(){
var=这个,
data=this.state.data;
如果(this.state.data.length>0){
data=this.state.data[0]。值;
data=this.state.data[0]。值[0]。子项;
}
var data=this.state.data;
如果(this.state.data.length>0){
data=this.state.data[0]。值;
}
var nestedData=data.map(函数(记录,id){
返回(
);
});
返回(
{nestedData}
);
}
});
*构成部分2:*
var Tile=React.createClass({
render:function(){
返回(
{this.props.data}
);
}
});
我想在Tile组件中呈现json的某些部分。其他组件具有父子关系,因此我可以轻松呈现数据,但我不知道如何在Tile组件中呈现数据,因为没有关系b/wTile组件和其他组件。我正在使用路由调用Tile组件和rend通过使用DefaultHandler删除主组件,这不是完整的代码。 任何形式的帮助都将不胜感激。 谢谢 Fhm

您想在这个用例中使用通量(或类似的东西)模式:-它被设计来解决这个确切的问题

您可以将您的数据(JSON有效负载)封装在一个共享存储中。然后,您的两个组件都可以从该存储中读取数据,而与它们之间的关系无关

如果数据需要更改,您可以将此存储与组件可以调用以触发数据刷新/变异等的操作创建者配对


这对于组件的深度嵌套也很有帮助,因为这样可以避免数据的深度冒泡。

谢谢,查看流量。