После слишком многого с Redux, флюсом и другими методами 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, чтобы вызвать повторная визуализация.
Пока приложение работает отлично, и я также очень люблю его простоту. Просьба пролить свет на эту технику за и против
Привет
EDIT:
Плохо вызвать render, поэтому я изменил его на другой метод, чтобы получить больше плюсов и минусов этой настройки.