当前位置: 首页 > 知识库问答 >
问题:

'this.setState'不是绑定函数中的函数

施飞鸿
2023-03-14

对不起,我能看到这个问题本问了好几次。我以前解决过这个问题,但我知道我正在以一种新的方式看待它。

这是我在流量存储中的构造函数:

class TodoStore extends EventEmitter {
  constructor() {
    super()
    this.state = {
      todos: [
        {
          id: uuid(),
          text: 'Go Shopping',
          complete: false
        },
        {
          id: uuid(),
          text: 'Pay Water Bill',
          complete: false
        },
      ],
      showCompletedTodos: true,
      showIncompletedTodos: true
    }

    this.deleteTodo = this.deleteTodo.bind(this)
    this.toggleTodo = this.toggleTodo.bind(this)
    this.toggleShowCompletedTodos = this.toggleShowCompletedTodos.bind(this)
    this.toggleShowIncompletedTodos = this.toggleShowIncompletedTodos.bind(this)
  }

下面是我通过TodoActions.fuction子组件中的Name调用的一些函数:

// Toggle the showing of completed todos
toggleShowCompletedTodos() {
    this.setState({
        showCompletedTodos: !this.state.showCompletedTodos
    })
}

// Toggle the showing of incompleted todos
toggleShowIncompletedTodos() {
    this.setState({
        showIncompletedTodos: !this.state.showIncompletedTodos
    })
}

deleteTodo(todoToDelete) {
    this.setState({
        todo: this.state.todos.filter( function(todo) {
            return todo.id !== todoToDelete.id
        })
    })
}

我得到未捕获类型错误:当我触发此函数时,this.setState不是函数。

在过去,函数中的bind to这个在构造函数中解决了这个问题,但在这里,is不起作用

这是我的参考:this.set状态不是一个功能

是因为它是一个通量存储而不是一个普通类吗?


共有1个答案

谭彦
2023-03-14

看起来好像是从EventEmitter中的类调用this.setState,但this.setState是组件类的函数,不能从扩展EventEmitter的类调用它。

 类似资料:
  • 问题内容: 我有以下组件,该组件维护在特定元素上触发事件时更新的状态,并且在更新状态时将其作为道具传递给另一个组件。我目前正在尝试为什么我得到以下错误“ this.setState不是函数”,它很可能没有绑定到正确的上下文。但是我不确定,我这样做正确吗? 编辑: 我只是意识到上下文会在“onreadyStateChange”函数时发生更改,所以我在searchGif中做了以下操作 问题答案: 您正

  • 我有以下组件,它维护当事件在特定元素上被激发时更新的状态,并且当状态被更新时,它将作为道具传递给另一个组件。我正在尝试为什么会出现以下错误“this.setstate is not a function”,它很可能没有绑定到正确的上下文。但我不确定这一点,我这样做对吗? 编辑:我刚刚意识到当“onreadystatechange”函数时上下文会发生变化,所以我在searchGif中做了以下操作

  • 问题内容: 我是React的新手,正在尝试编写使用API​​的应用程序。我不断收到此错误: TypeError:this.setState不是一个函数 当我尝试处理API响应时。我怀疑此绑定有问题,但我不知道如何解决它。这是我组件的代码: 问题答案: 回调是在不同的上下文中进行的。您需要这样做才能在回调内部进行访问: 编辑:看起来您必须同时绑定和调用:

  • 问题内容: 当前组件的值为false。捕获滚动​​事件时,它会查看,如果有,它会做一些事情。 我想在动作再次发生之前有某种静态延迟,这就是为什么将内部函数设置为并将阻塞当前方法的进一步逻辑的原因,直到返回到。 但在当前时刻出现以下错误 遗漏的类型错误:this.setState不是一个函数 时被内部调用。 问题答案: 您正在失去上下文。使用箭头功能作为保留适当执行上下文的简单方法: 请记住,除非您

  • 当将对象方法作为回调进行传递,例如传递给 setTimeout,这儿会存在一个常见的问题:“丢失 this”。 在本章中,我们会学习如何去解决这个问题。 丢失 “this” 我们已经看到了丢失 this 的例子。一旦方法被传递到与对象分开的某个地方 —— this 就丢失。 下面是使用 setTimeout 时 this 是如何丢失的: let user = { firstName: "Joh

  • 当前组件的值为false。捕获scroll事件时,它会查看,如果它的,它会执行一些操作。 我希望在操作再次发生之前有某种静态延迟,这就是为什么在函数中,被设置为并将阻止下一个的当前方法的进一步逻辑,直到返回到。 但当前发生以下错误,未捕获TypeError:在内部调用时,This.SetState不是函数。