【发布时间】:2018-04-26 06:50:35
【问题描述】:
我正在使用库来呈现甘特图。此图表提供了一个 js 事件来处理按钮单击。我需要在该事件中路由或呈现另一个反应组件。那么......我怎样才能在那个事件中渲染到我的组件的路由?我正在使用反应路由器和流星。
render() {
gantt.config.buttons_left=["dhx_save_btn","dhx_cancel_btn","dhx_delete_btn"];
gantt.config.buttons_right = ["go_task_btn"];
gantt.locale.labels["go_task_btn"] = 'VER';
gantt.attachEvent("onLightboxButton", function(button_id, node, e){
if(button_id == "go_task_btn"){
var idTask = gantt.getState().lightbox;
//HERE I WAN TO REDIRECT OR RENDER ANOTHER
// REACT COMPONENTE
}
});
return (
<div>
<Toolbar
zoom={this.state.currentZoom}
onZoomChange={this.handleZoomChange}
/>
<div className="gantt-container">
<Gantt
tasks={data}
zoom={this.state.currentZoom}
onTaskUpdated={this.logTaskUpdate}
onLinkUpdated={this.logLinkUpdate}
/>
</div>
{/*<MessageArea messages={this.state.messages}/> */}
</div>
); }}export default App;
【问题讨论】:
-
如果我对您的理解正确,您想使用 react-router 以编程方式导航吗?也许这有帮助:stackoverflow.com/a/42121109/2637217
-
这并不能解决我的问题。我不能也不想渲染按钮组件。我需要使用一行没有按钮的代码。
-
检查这个答案stackoverflow.com/questions/44127739/…。此外,您可能应该在 componentDidMount 函数中添加您在渲染函数中所做的所有配置
-
确保路由器
history在您的 js 中作为prop和prop.history.push('/newlocation')可用。 -
@Cognitiva 您不需要按钮,只需使用
withRouter并致电history.push()。
标签: javascript reactjs meteor react-router