【问题标题】:How to redirect to another component without using a button如何在不使用按钮的情况下重定向到另一个组件
【发布时间】: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 中作为 propprop.history.push('/newlocation') 可用。
  • @Cognitiva 您不需要按钮,只需使用withRouter 并致电history.push()

标签: javascript reactjs meteor react-router


【解决方案1】:

您可以通过在渲染之外创建一个函数来做到这一点,将所有代码放入其中并在返回中调用此函数。

【讨论】:

    猜你喜欢
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2018-07-30
    • 2022-09-19
    • 1970-01-01
    相关资源
    最近更新 更多