为了账号安全,请及时绑定邮箱和手机立即绑定

ReactJS TypeError:无法读取未定义的属性“历史”

ReactJS TypeError:无法读取未定义的属性“历史”

料青山看我应如是 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>

));

通常我只是在实用程序中包装东西,但老实说,我不确定在这种情况下它会给你带来什么。希望有帮助。


查看完整回答
反对 回复 2022-06-09
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信