无法在反应网络应用程序中添加电子邮件字段
Not able to add email field in react web app
我正在开发一个与 Mobx 集成的小型 React 应用程序。我已经设置了一个会员商店,如下所示:
import {observable, action, computed} from 'mobx';
class MemberStore {
@observable members = [];
@action addMember(data) {
const existing = this.members;
this.members = existing.concat(data);
}
@computed get memberCount() {
return this.members.length;
}
}
const store = new MemberStore();
export default store;
现在我有一个联系页面,其中包含姓名和电子邮件的形式。现在我可以添加姓名但不能添加电子邮件。所以基本上当我点击提交按钮时,我只会得到名字和名字旁边的 0。
import React, { Component } from 'react';
import Navbar from '../components/Navbar';
import Footer from '../components/Footer';
import Jumbotron from '../components/Jumbotron';
import {inject, observer} from 'mobx-react';
@inject('MemberStore')
@observer
class Contact extends Component {
handleSubmit = (e) => {
e.preventDefault();
const member = this.member.value;
const email = this.email.value;
// const email = this.email.value;
this.props.MemberStore.addMember(member, email);
this.member.value = '';
this.email.value = '';
}
render() {
const {MemberStore} = this.props;
return (
<div>
<Navbar />
<Jumbotron title="Contact Page" subtitle="You want to get in touch"/>
<div className="container">
<h2>You have {MemberStore.memberCount} members.</h2>
<form onSubmit={e => this.handleSubmit(e)}>
<input type="text" placeholder="Enter Your Name" ref={input => this.member = input }/>
<div>
<input type="text" placeholder= "Enter Your Email" ref={input => this.email = input }/>
</div>
<button>Submit</button>
</form>
<ul>
{MemberStore.members.map((member,email) => (
<li key={member}>
{member}
{email}
</li>
))}
</ul>
</div>
<Footer />
</div>
)
}
}
export default Contact;
如有任何帮助,我们将不胜感激。
您的问题可能是 addMember
接受一个参数 data
,而您在调用它时将两个参数传递给它:addMember(name, email)
.
您应该将姓名和电子邮件作为对象传递:
addMember({name, email})
您将 MemberStore.members
数组映射到 JSX 的代码也采用了两个参数,而它应该只采用一个对象作为参数:
{MemberStore.members.map({member,email}) => (
请注意,我使用的是上面的 ES6 Object Literal Property Value Shorthand 语法。
我正在开发一个与 Mobx 集成的小型 React 应用程序。我已经设置了一个会员商店,如下所示:
import {observable, action, computed} from 'mobx';
class MemberStore {
@observable members = [];
@action addMember(data) {
const existing = this.members;
this.members = existing.concat(data);
}
@computed get memberCount() {
return this.members.length;
}
}
const store = new MemberStore();
export default store;
现在我有一个联系页面,其中包含姓名和电子邮件的形式。现在我可以添加姓名但不能添加电子邮件。所以基本上当我点击提交按钮时,我只会得到名字和名字旁边的 0。
import React, { Component } from 'react';
import Navbar from '../components/Navbar';
import Footer from '../components/Footer';
import Jumbotron from '../components/Jumbotron';
import {inject, observer} from 'mobx-react';
@inject('MemberStore')
@observer
class Contact extends Component {
handleSubmit = (e) => {
e.preventDefault();
const member = this.member.value;
const email = this.email.value;
// const email = this.email.value;
this.props.MemberStore.addMember(member, email);
this.member.value = '';
this.email.value = '';
}
render() {
const {MemberStore} = this.props;
return (
<div>
<Navbar />
<Jumbotron title="Contact Page" subtitle="You want to get in touch"/>
<div className="container">
<h2>You have {MemberStore.memberCount} members.</h2>
<form onSubmit={e => this.handleSubmit(e)}>
<input type="text" placeholder="Enter Your Name" ref={input => this.member = input }/>
<div>
<input type="text" placeholder= "Enter Your Email" ref={input => this.email = input }/>
</div>
<button>Submit</button>
</form>
<ul>
{MemberStore.members.map((member,email) => (
<li key={member}>
{member}
{email}
</li>
))}
</ul>
</div>
<Footer />
</div>
)
}
}
export default Contact;
如有任何帮助,我们将不胜感激。
您的问题可能是 addMember
接受一个参数 data
,而您在调用它时将两个参数传递给它:addMember(name, email)
.
您应该将姓名和电子邮件作为对象传递:
addMember({name, email})
您将 MemberStore.members
数组映射到 JSX 的代码也采用了两个参数,而它应该只采用一个对象作为参数:
{MemberStore.members.map({member,email}) => (
请注意,我使用的是上面的 ES6 Object Literal Property Value Shorthand 语法。