サードパーティのコントロールgantt chart
をクリックしたときの状態を更新する反応コンポーネントInfoPanel
があります。私は、コンポーネントがお互いに通信できるようにフラックスでこれを行っただけです。サードパーティコントロールイベントonTaskClick
が発生したときに、InfoPanel
コンポーネントの状態を変更する方法がわかりません。サードパーティのコントロールからのイベントの反応、更新状態
ここでは、サードパーティのコントロールに対して発生するイベントがあります。ここ
class InfoPanelService {
constructor() {
this.InitInfoPanel();
}
OnTaskClick() {
//event from a third party control
gantt.attachEvent("onTaskClick", function (id, e) {
var tasks = gantt.getTaskByTime();
var task = tasks[id];
//determine the task type and get the data
return true;
});
}
InitInfoPanel() {
this.OnTaskClick();
}
}
は私InfoPanel
成分
var InfoPanel = React.createClass({
getInitialState: function() {
return { data: {
project: {},
subProject: {},
activity: {}
} };
},
render: function() {
return (<div>
...tables with the state values
... too long to post
</div>
);
}
})です。
このようなものをコンポーネントに追加する必要がありますか? <InfoPanel OnTaskClick = infoPanelService.OnTaskClick
/>の代わりに、コンストラクタ内でイベントをすぐに付け加えて、その関数を小道具としてサービスから渡すのではなく、このようにしてコンポーネントは完全に愚かであり、簡単に投げて再利用することができます。
onResourceSelect() {
this.props.OnTaskClick();
},
チェックをこの質問:http://stackoverflow.com JustinM.Ucar @ /質問/ 29100774/reactjs-SETSTATEオン親インサイド子成分 –
私はこれが私をどのように役立つか表示されません。そのイベントは、私の親ではない第三者のコントロールから解雇されています。私はそれが発生したときに通知する必要があり、その後、私のコンポーネントの内部状態を変更します。私はそれをDOM要素につけることができません –