`this.setState`不是绑定函数

时间:2017-01-30 20:12:02

标签: reactjs reactjs-flux

抱歉,我可以看到这个问题已被问过几次。我之前已经解决了这个问题,但我知道我正在以一种新的方式看待它。

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

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.fuctionName调用的一些函数:

// 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
        })
    })
}

当我触发此功能时,我得到Uncaught TypeError: this.setState is not a function

过去在函数中绑定到构造函数中的this解决了这个问题,但是在这个问题上是不行的

这是我的判决: this.setState is not a function

是因为它是一个Flux商店而不是普通类吗?

1 个答案:

答案 0 :(得分:0)

看起来好像是从继承自EventEmitter的类调用this.setState但是this.setState是Component类的函数,你不能从扩展EventEmitter的类中调用它。