反应句柄表单提交 [英] React handle form submit

查看:78
本文介绍了反应句柄表单提交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在React / Redux中创建一个表单。现在我只希望表单在提交表单时触发我的函数handleSubmit。但是目前看起来该函数在页面加载时立即被触发...

I'm trying to create a form in React/Redux. For now I just want the form to trigger my function handleSubmit when the form is submitted. However at the moment it looks like the function is triggered instantly on page load ...

export default class AssetsAdd extends React.Component {

  componentDidMount() {
    console.log(this)
  }

  handleSubmit(event) {
    if (this.refs.titleInput !== '') {
      event.preventDefault();
      var asset = {
        date: '',
        title : this.refs.titleInput.value,
        id : '',
        type: this.refs.typeInput.value
      }

      return this.props.dispatch(addAsset(asset))
    }


  }

  render() {
    return (
      <div>
        <Row>
          <Portlet title='New Asset' form>
            <Form horizontal onSubmit={this.handleSubmit}>
              <FormGroup>
                <Label text='Title' size='3' />
                <Input ref="titleInput" placeholder='Enter asset title' size='4'/>
              </FormGroup>
              <FormGroup>
                <Label text='Type' size='3' />
                <Input ref="typeInput" placeholder='Enter asset type' size='4'/>
              </FormGroup>
              <FormGroup>
                <Label text='Description' size='3' />
                <Input ref="descriptionInput" placeholder='Enter asset description' size='4'/>
              </FormGroup>
              <FormGroup>
                <Label text='Documentation' size='3' />
                <Input ref="documentationInput" placeholder='Enter documentation URL' size='4'/>
              </FormGroup>
              <FormActionBar>
                <SubmitButton value='Submit'/>
                <CancelButton value='Cancel'/>
              </FormActionBar>
            </Form>
          </Portlet>
        </Row>
      </div>
    )
  }
}

function mapStateToProps(state) {
  return {
    assets: state.assets
  };
}

export const AssetAddContainer = connect(mapStateToProps)(AssetsAdd);

我知道剩下的代码还不完全正确但我现在主要担心的是在适当的时刻触发onSubmit动作。

I know the rest of the code isn't all correct yet but my main concern now is just getting the onSubmit action triggered at the right moment.

提前致谢!

推荐答案

看起来你没有绑定你的 handleSubmit

Looks like you're not binding your handleSubmit.

来自文档


方法遵循与常规ES6类相同的语义,这意味着
它们不会自动将其绑定到实例。

Methods follow the same semantics as regular ES6 classes, meaning that they don't automatically bind this to the instance.

你有三个选择


  1. 添加构造函数并在那里进行绑定(推荐):

  1. Add a constructor and do the binding there (recommended):

this.handleSubmit = this.handleSubmit.bind(this);

直接绑定:

onSubmit = {this.handleSubmit.bind(this)}

使用箭头 => 函数

onSubmit = {()=> this.handleSubmit}

这篇关于反应句柄表单提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆