【问题标题】:ReactJS events - this.props.onSubmit(this.state....)ReactJS 事件 - this.props.onSubmit(this.state....)
【发布时间】:2018-11-24 10:38:05
【问题描述】:

以下代码 sn-p 来自一个简单的 Todo 列表,该列表将信息存储在本地 EOS 区块链上,并具有基于 ReactJS 构建的前端 Web 界面。该问题与ReactJS有关,特别是事件处理程序代码sn-p

saveTodo(e) {
  e.preventDefault();
  this.props.onSubmit(this.state.description)
  this.setState({ description: "" })
}

完整的程序可以在这里找到...https://github.com/eosasia/eos-todo/blob/master/frontend/src/index.jsx

在事件处理程序saveTodo(e)的主体中,有一行this.props.onSubmit(this.state.description)。我想知道这里到底发生了什么?

我是 ReactJS 的新手,看起来上面的代码行以某种方式通过调用内置函数 onSubmit() 来设置属性(props),其中的参数是从状态对象。它是否正确?我没有看到 onSubmit() 在这段代码中的任何地方是如何分配给道具的,但不知何故我们能够像这样使用它:this.props.onSubmit(this.state.description ) ....这里发生了什么?

非常感谢。

附:请原谅术语。我不确定“事件处理程序”或“事件侦听器”是否正确。

【问题讨论】:

    标签: reactjs event-handling react-props eos


    【解决方案1】:

    TodoForm 组件有一个属性“onSubmit”。

    该行只是调用此属性(由其父级传递给它)并传入描述(取自 TodoForm 的状态)。

    例如:

    <TodoForm onSubmit={(description) => alert(description)} />
    

    Read more about props in react here.

    【讨论】:

    • 感谢 Mathew,在您的示例中,您正在实现该功能,这会导致警报(描述)。但是,在链接中的完整代码上,似乎没有实现该功能。 this.props.onSubmit(this.state.description) 被调用后会发生什么? render() { return(
      ......
      )
    • @kamiss 在链接中的完整代码中,如果你查看 TodoList 的渲染函数,你会看到 &lt;TodoForm onSubmit={this.addNewTodo.bind(this)} /&gt; 所以在这种情况下,onSubmit 属性设置为 addNewTodo在 TodoList 中声明的函数。如果你看的话,addNewTodo(description) 采用与传递到属性中的相同的描述参数。
    • 谢谢马修,我终于明白了!
    猜你喜欢
    • 2014-12-12
    • 2019-01-19
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多