料青山看我應如是
2022-06-09 16:40:08
所以我嘗試做一個“服務”來幫助我完成一些小任務,我的 NavigationService.js 具有以下功能: redirectView = (view) => { this.props.history.push(`/${view}`) }然后我得到了我的 Welcome.jsx,它有:<BtnRectangularBorder> <BtnRectangular className="battle-shonen-color btn-rectangular-md-size btn-rectangular-primary" title="Cards Overview" onClick={NavigationService.redirectView("/cards-overview")} /></BtnRectangularBorder>所以現在在我的 .js 文件中,它給了我一個錯誤:“TypeError: Cannot read property 'history' of undefined”,我應該做 .js 文件一個組件或任何東西,因為我不承認歷史
1 回答

互換的青春
TA貢獻1797條經驗 獲得超6個贊
我猜你正在使用React Router作為你的路由解決方案。我不確定在它周圍包裝一個實用函數會有多大用處,因為它已經是一個實用函數。但是,如果您想這樣做,則需要將當前history對象公開給函數。像這樣的東西:
const NavigationService = {
redirectView = (history, view) => {
history.push(`/${view}`)
}
}
const MyComponent = withRouter(({ history }) => (
<BtnRectangularBorder>
<BtnRectangular
className="battle-shonen-color btn-rectangular-md-size btn-rectangular-primary"
title="Cards Overview"
onClick={NavigationService.redirectView(history, "/cards-overview")}
/>
</BtnRectangularBorder>
));
通常我只是在實用程序中包裝東西,但老實說,我不確定在這種情況下它會給你帶來什么。希望有幫助。
添加回答
舉報
0/150
提交
取消