Связь между компонентами Reactjs
После того, как я слишком много боролся с Redux, flux и другими методами pub / sub, я закончил со следующей техникой. Я не знаю, может ли это привести к серьезным повреждениям или недостаткам, поэтому выкладываю это здесь, чтобы получить представление от опытных программистов о его плюсах и минусах.
var thisManager = function(){
var _Manager = [];
return{
getThis : function(key){
return _Manager[key];
},
setThis : function(obj){
_Manager[obj.key] = obj.value;
}
}
};
var _thisManager = new thisManager();
// React Component
class Header extends Component{
constructor(){
super();
_thisManager.setThis({ key: "Header", value:this}
}
someFunction(data){
// call this.setState here with new data.
}
render(){
return <div />
}
}
// Then from any other component living far somewhere you can pass the data to the render function and it works out of the box.
i.e.
class Footer extends Component{
_click(e){
let Header = _thisManager.getThis('Header');
Header.somefunction(" Wow some new data from footer event ");
}
render(){
return(
<div>
<button onClick={this._click.bind(this)}> send data to header and call its render </button>
</div>
);
}
}
Я отправляю json как данные в мое приложение, и оно прекрасно отображает нужные компоненты, и я могу вызвать рендер без каких-либо публикаций / переходов или глубоких переходов по подпрограммам, чтобы вызвать родительский метод с изменением this.setState для повторного рендеринга. ,
Пока приложение работает нормально, и мне тоже нравится его простота. Просьба пролить свет на эту технику плюсы и минусы
С уважением
РЕДАКТИРОВАТЬ:
Плохо вызывать рендер, поэтому я изменил его на другой метод, чтобы получить больше плюсов и минусов этой настройки.