gpt4 book ai didi

javascript - 在没有 jQuery AJAX 的情况下在 React 中提交表单

转载 作者:行者123 更新时间:2023-11-30 11:48:22 25 4
gpt4 key购买 nike

我正在尝试在使用 React 构建的静态站点中使用 formspree 提交我的表单。我已经接近了,但现在完全迷路了。

我正在尝试使用 ES6 Promise 函数,但不知道如何完成它。

这是我当前的代码:

import React from 'react';
import { Link } from 'react-router';


import { prefixLink } from 'gatsby-helpers';
import { config } from 'config';

import Headroom from 'react-headroom';

import Nav from './nav.js';

import '../css/main.scss';

import Modal from 'boron/DropModal';

import {Input, Label,Textarea, Button} from 're-bulma';

const modalStyle = {
minHeight: '500px',
backgroundColor: '#303841'
};

const backdropStyle = {
backgroundColor: '#F6C90E'
};

const contentStyle = {
backgroundColor: '#303841',
padding: '3rem'
};

const gotcha = {
display: 'none'
};

const email = 'https://formspree.io/dillonraphael@gmail.com';




export default class RootTemplate extends React.Component {
static propTypes = {
location: React.PropTypes.object.isRequired,
children: React.PropTypes.object.isRequired,
}

static contextTypes = {
router: React.PropTypes.object.isRequired,
}

constructor() {
super();
this.showModal = this.showModal.bind(this);
}

showModal () {
this.refs.modal.show();
}

formSubmit(e) {
e.preventDefault();
let data = {
name: this.refs.name.value,
email: this.refs.email.value,
message: this.refs.message.value
}
return new Promise((resolve, reject) => {
const req = new XMLHttpRequest();
req.open('POST', email);
});
console.log(data);
}

render() {
return (
<div>
<Headroom>
<Nav showModal={this.showModal}/>
</Headroom>
<Modal ref="modal" modalStyle={modalStyle} contentStyle={contentStyle} backdropStyle={backdropStyle}>
<form ref='contact_form' onSubmit={::this.formSubmit}>
<Label>Name:</Label>
<Input ref="name" />
<Label>Email:</Label>
<Input ref="email" type="email"/>
<Label>Message:</Label>
<Textarea ref="message" />
<Input type="text" name="_gotcha" style={gotcha}/>
<Button buttonStyle="isOutlined" color="isWarning">Submit</Button>
</form>
</Modal>
{this.props.children}
</div>
);
}
}

我目前也遇到这个错误:

Object {name: undefined, email: undefined, message: undefined}

如有任何帮助,我们将不胜感激。真的很努力学习。

最佳答案

我可能是错的,但据我所知,您在这里几乎不需要使用 Promise。试试这个

formSubmit = (e) => {
e.preventDefault();
const {name, email, message} = this.refs
const formData = new FormData();
formData.append("name", name.value);
formData.append("email", email.value);
formData.append("message", message.value);
const req = new XMLHttpRequest();
req.open('POST', url);
req.send(formData);
}

并且我将 previosley 定义的 cosnt email 重命名为 url

关于javascript - 在没有 jQuery AJAX 的情况下在 React 中提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40206596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com