在过去的几个月中,我一直在使用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>
}
}
答案 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>;
}