[英]'TypeError: Cannot read properties of undefined (reading 'push')' when using 'useHistory' hook of 'react-router-dom'
[英]TypeError: Cannot read properties of undefined (reading 'push') React router DOM
我刚刚学会了反应,当按钮被点击时我想导航,但它没有,并且给出了一个错误,'push'是未定义的,如何解决它?
import { Route, useHistory as history } from 'react-router-dom'
export default class TotalPrice extends Component {
checkout = (sum) => {
const order = {
total_bayar: sum,
menus: this.props.carts
}
axios.post(API_URL + "orders", order).then((res) => {
this.props.history.push('/order-success')
})
}
render() {
const sum = this.props.carts.reduce(function (result, item) {
return result + item.total_price;
}, 0);
return (
<Row className='fixed-bottom'>
<Col md={{span: 3, offset: 9}} className='py-4 px-4 total'>
<h4>
Total : <strong className='total-number'>Rp. {priceSplitter(sum)}</strong>
</h4>
<Button
variant="primary"
className="button-checkout"
onClick={() => this.checkout(sum)}
>
<FontAwesomeIcon icon={faShoppingCart} />
Checkout
</Button>
</Col>
</Row>
)
}
}
错误是说this.props.history
是未定义的。 由于您似乎正在使用react-router-dom@5
,因此您可以导入并使用withRouter
高阶组件并装饰此TotalPrice
组件以注入路由 props 。
import { Route, withRouter } from 'react-router-dom'
class TotalPrice extends Component {
checkout = (sum) => {
const order = {
total_bayar: sum,
menus: this.props.carts
};
axios.post(API_URL + "orders", order)
.then((res) => {
this.props.history.push('/order-success');
});
}
render() {
const sum = this.props.carts.reduce(function (result, item) {
return result + item.total_price;
}, 0);
return (
<Row className='fixed-bottom'>
<Col md={{span: 3, offset: 9}} className='py-4 px-4 total'>
<h4>
Total : <strong className='total-number'>Rp. {priceSplitter(sum)}</strong>
</h4>
<Button
variant="primary"
className="button-checkout"
onClick={() => this.checkout(sum)}
>
<FontAwesomeIcon icon={faShoppingCart} />
Checkout
</Button>
</Col>
</Row>
);
}
}
export default withRouter(TotalPrice);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.