reactjs - React - 激活 onClick 函数会引发 'Cannot read property' 错误

标签 reactjs

我有一个 react 函数,在渲染方法中我试图让一个方法运行“onClick”。

let categories_list=this.state.categories.results.map(function(category){
        return (
          <a onClick={() => this.getNewUrl(category_id)}>
            <li key={category.id}>
            ID: {category.id}<br/>
            Title: {category.name}<br/>
            Organisation: {category.organisation}<br/>
            </li>
        </a>
       )});

这是我正在尝试运行的函数:

getNewUrl(category_id) {
  this.setState((prevState, props) => ({
    assessments_List_url: "/api/assessments/?by-category=" + category_id + "/"
  }))
  console.log('yo ik draai')
 };

两者都在同一个组件中,为了更好地衡量,我还在组件构造函数方法中显式绑定(bind)了该函数。

this.getNewUrl = this.getNewUrl.bind(this);

但是,当我运行此代码并单击相应的标签时,出现以下错误。

Uncaught TypeError: Cannot read property 'getNewUrl' of undefined

有人知道我做错了什么吗?我已经非常接近 react 文档中的示例了,所以我真的对我做错了什么感到不知所措。

最佳答案

此处使用箭头函数:

let categories_list=this.state.categories.results.map((category) => { // <== !!!
        return (
          <a onClick={() => this.getNewUrl(category_id)}>
            <li key={category.id}>
            ID: {category.id}<br/>
            Title: {category.name}<br/>
            Organisation: {category.organisation}<br/>
            </li>
        </a>
       )});

当您使用function语法时,this关键字指的是函数所属的对象。不适用于您的 react 组件。

关于reactjs - React - 激活 onClick 函数会引发 'Cannot read property' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47451380/

相关文章:

reactjs - map 组件: Cannot read property 'initialize' of undefined

javascript - react-admin:编辑未预先填充现有属性的表单

javascript - 如何在 React Router 中正确使用 IndexRoute?

javascript - 通过 Hooks 在 React 中重用状态

javascript - 如何模块化 JavaScript 类(从主文件中提取方法,将方法导入主文件)

javascript - NextJs 在调整大小时传递动态宽度而不重新渲染

reactjs - 禁用 hydration/仅部分 hydration Next.js 应用程序

javascript - 如何使用 Reactjs 将日历的日期状态发送到另一个日历?

javascript - 在react条件返回中使用API​​ JSON数据

javascript - 我正在尝试为产品生成评级星星,评级值(0 到 5)已作为 Prop