React JS:history.push不是函数错误,并且在swal

时间:2018-12-10 20:06:05

标签: javascript reactjs react-router

在过去的几个月中,我一直在使用react js,并且刚刚了解了React的sweetalert bootstrap插件。成功更新组件时,屏幕上会出现一个对话框。单击“单击此处”按钮后,history.push会被调用,它应该路由到另一个页面,但是我一直遇到错误

  

history.push未定义。

我在Google上搜索了很多内容,并尝试了很多场景,但都没有成功。

代码段:

class displayBlank extends Component {

render(){

<div id="displayDetails">
          <DisplayDetails respData={this.state.respData}  />
        </div>

}

}

export default displayBlank;


class displayDetails{

 handleUpdate()
 {

  // Body of HandleUpdate
    swal({
      title :"Customer Updated Successfully!",
      icon : "success",
      button: "Click Here!",
    }).then((e) => { history.push('/blank');
  });

  }

  render(){

  <table>
  <tr>
  <td>

   Table-Grid Contents
  </td>
  </tr>
  </table>

  <td>
              <FormGroup controlId="formControlsDisabledButton"  style={buttonalignment}>
                <Button className="float-right" bsStyle="primary" type="submit" onClick={this.handleUpdate}>Save</Button>
                {'  '}
                <Button className="float-right" bsStyle="primary" type="submit" disabled>Download</Button>
                {'  '}
              </FormGroup>
            </td>


  }

}  

2 个答案:

答案 0 :(得分:3)

如果您使用的是react-router,请使用this.props.history.push('<url>')

如果您遇到Cannot read property 'push' of undefined错误,请将组件包装在withRouter中:

import { withRouter } from 'react-router';

class DisplayBlank extends Component {
  ...
}

export default withRouter(DisplayBank);

答案 1 :(得分:0)

您只需要将 history 中的 props 作为函数参数中的对象传递。

function =({history})=>{
   return <div>Hello</div>;
}