Javascript 在另一个类(REACT.js)中使用函数onSubmit

Javascript 在另一个类(REACT.js)中使用函数onSubmit,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我在app.js中有一个按钮,我想从另一个函数中使用event-onSubmit。但是,当我尝试的时候,什么都没有发生 附录js import React, { Component } from 'react'; import Publish from './Publish'; class App extends Component { constructor(props) { super(props); } render() { return (

我在app.js中有一个按钮,我想从另一个函数中使用event-onSubmit。但是,当我尝试的时候,什么都没有发生

附录js

import React, { Component } from 'react';

import Publish from './Publish';

class App extends Component {

  constructor(props) {
    super(props);
  }

  render() {
    return (
        <div>
          <form onSubmit={Publish.onSubmit}>
              <button></button>
          </form>
        </div>
    );
  }
}

export default App;
当submit上的Publish
函数在应用程序中运行时,它起作用了。但是现在,当我按下按钮时,什么也没发生。

如何修复它?

Publish
是一个类,不是一个实例,因此没有
Publish。onSubmit
-
onSubmit
是一个类字段,不是静态方法

如果
onSubmit
是一个普通方法,那么它将是
Publish.prototype
的一个属性,您可以使用

<form onSubmit={Publish.prototype.onSubmit}>
要使
onSubmit
成为普通方法,请将其语法更改为

onSubmit() {
  // do something
}
如果实例化
Publish
,并且需要
this
引用submit
中的实例,那么还需要
绑定构造函数中的函数

实时片段:

类发布扩展了React.Component{
提交(事件){
event.preventDefault();
console.log('submitrunning');
}
}
类应用程序扩展了React.Component{
建造师(道具){
超级(道具);
}
render(){
返回(
按钮
);
}
}
//渲染它
ReactDOM.render(
,
document.getElementById(“react”)
);

这不是您在react中应该做的事情。显然,如中所述,您可以使用:

<form onSubmit={Publish.prototype.onSubmit}>

或者,只需导出函数并使用它

但是,像这样实施会给您带来巨大的成本。例如,很难维持这些状态。因此,我建议您提供一个父包装器,并为事件处理程序提供道具,如:

<ParentComponent onSubmit={this.onSubmit}>

在子组件中,钩住该事件。例如:

static onSubmit() {
  // do something
}
<ChildComponent onSubmit={this.props.onSubmit}>

如需进一步帮助,您可以查看其他帖子:


希望,这是有道理的

onSubmit
是否需要是组件方法?它可能是由
Publish
App
导入的模块中的一个函数吗?@stealthInja是的,在模块中,我需要在提交后获取和使用(例如:3个按钮,包含3个不同的事件)。很遗憾,但不起作用:(@Hiroyasu It should.BTW,你在那里尝试做什么也很重要。只需记录一些东西就可以了。@bhojendraurauniyar我正在尝试连接MetaMask。在一个文件(app.js)中,所有这些代码都可以工作,但我甚至尝试添加console.log(“错误”)在Publish中,这对我没什么帮助。我想button只是看不到事件,但不知道why@Hiroyasu不太确定,但您可以尽可能尝试我在帖子中提到的另一个选项。@Hiroyasu我的错误是,
onSubmit
是一个类字段,不是一个普通的方法,因此它不在原型上-请参阅使用live snippet编辑
<ParentComponent onSubmit={this.onSubmit}>
<ChildComponent onSubmit={this.props.onSubmit}>