Javascript 如何提交新帖子?
大家好,我正在制作一个用于托管事件的应用程序,当我尝试添加事件时,“提交”按钮没有任何作用。请帮帮我 这是句柄提交功能Javascript 如何提交新帖子?,javascript,reactjs,Javascript,Reactjs,大家好,我正在制作一个用于托管事件的应用程序,当我尝试添加事件时,“提交”按钮没有任何作用。请帮帮我 这是句柄提交功能 handleSubmit = e => { e.preventDefault(); const errors = this.validate(); this.setState({ errors: errors || {} }); if (errors) return; this.doSubmit(); }; 这是按钮 renderButt
handleSubmit = e => {
e.preventDefault();
const errors = this.validate();
this.setState({ errors: errors || {} });
if (errors) return;
this.doSubmit();
};
这是按钮
renderButton(label) {
return (
<button disabled={this.validate()} className="btn btn-primary">
{label}
</button>
);
}
renderButton(标签){
返回(
{label}
);
}
这是EVENTFORM的
import React from "react";
import Form from "./form";
import Joi from "joi-browser";
import { getEvent, saveEvent } from "../services/fakeEvents";
import { getCategories } from "../services/fakeCategories";
class EventForm extends Form {
state = {
data: {
title: "",
eventPicture: "",
categoryId: "",
eventTime: "",
numberOfAtendies: "",
location: "",
details: ""
},
categories: [],
errors: {}
};
schema = {
_id: Joi.string(),
title: Joi.string()
.required()
.label("Event Title"),
categoryId: Joi.string()
.required()
.label("Choose Category"),
eventTime: Joi.number()
.required()
.label("Choose Event Time"),
numberOfAtendies: Joi.number()
.required()
.min(1)
.max(100000)
.label("Numeber of Attendies"),
location: Joi.string()
.required()
.label("Event Location"),
details: Joi.string()
.required()
.label("Event Details")
.min(250)
.max(300)
};
componentDidMount() {
const categories = getCategories();
this.setState({ categories });
const eventId = this.props.match.params.id;
if (eventId === undefined) return;
const event = getEvent(eventId);
if (!event) return this.props.history.replace("/not-found");
this.setState({ data: this.mapToViewModel(event) });
}
mapToViewModel(event) {
return {
_id: event._id,
title: event.title,
categoryId: event.category._id,
eventTime: event.eventTime,
numberOfAtendies: event.numberOfAtendies,
location: event.location,
details: event.details
};
}
doSubmit = () => {
saveEvent(this.state.data);
this.props.history.push("/home");
console.log(this.state)
};
render() {
return (
<div>
<h1>Create Event</h1>
<form onSubmit={this.handleSubmit}>
{this.renderInput("title", "Title")}
{this.renderSelect("categoryId", "Category", this.state.categories)}
{this.renderInput("eventTime", "Event Time")}
{this.renderInput("numberOfAtendies", "Number of Attendies")}
{this.renderInput("location", "Location")}
{this.renderInput("details", "Details")}
{this.renderButton("Create")}
</form>
</div>
);
}
}
export default EventForm;
从“React”导入React;
从“/Form”导入表单;
从“Joi浏览器”导入Joi;
从“./services/fakeEvents”导入{getEvent,saveEvent};
从“./services/fakeCategories”导入{getCategories};
类EventForm扩展了表单{
状态={
数据:{
标题:“,
事件图片:“”,
类别:“,
事件时间:“,
数量项:“”,
地点:“,
详情:“
},
类别:[],
错误:{}
};
模式={
_id:Joi.string(),
标题:Joi.string()
.required()
.标签(“活动名称”),
categoryId:Joi.string()
.required()
.标签(“选择类别”),
eventTime:Joi.number()
.required()
.标签(“选择事件时间”),
numberOfAtendies:Joi.number()
.required()
.min(1)
.最大值(100000)
.标签(“出席人数”),
位置:Joi.string()
.required()
.标签(“活动地点”),
详细信息:Joi.string()
.required()
.标签(“活动详情”)
.min(250)
.最大值(300)
};
componentDidMount(){
const categories=getCategories();
this.setState({categories});
const eventId=this.props.match.params.id;
if(eventId==未定义)返回;
const event=getEvent(eventId);
如果(!event)返回此.props.history.replace(“/notfound”);
this.setState({data:this.mapToViewModel(event)});
}
mapToViewModel(事件){
返回{
_id:event.\u id,
标题:event.title,
categoryId:事件。类别。\u id,
eventTime:event.eventTime,
numberOfAtendies:event.numberOfAtendies,
地点:event.location,
详细信息:event.details
};
}
doSubmit=()=>{
saveEvent(this.state.data);
this.props.history.push(“/home”);
console.log(this.state)
};
render(){
返回(
创建事件
{this.renderInput(“title”,“title”)}
{this.renderSelect(“categoryId”,“Category”,this.state.categories)}
{this.renderInput(“事件时间”,“事件时间”)}
{this.renderInput(“numberOfAtendies”,“attentidies的数量”)}
{this.renderInput(“location”,“location”)}
{this.renderInput(“details”,“details”)}
{this.renderButton(“创建”)}
);
}
}
导出默认事件形式;
不确定这是否有意义,我是新手,所以如果需要更多信息,请告诉我 你的问题就在这里,应该是这样的:
renderButton(label) {
return (
<button disabled={this.validate() ? true : false} className="btn btn-primary">
{label}
</button>
);
}
renderButton(标签){
返回(
{label}
);
}
您的问题就在这里,应该是这样的:
renderButton(label) {
return (
<button disabled={this.validate() ? true : false} className="btn btn-primary">
{label}
</button>
);
}
renderButton(标签){
返回(
{label}
);
}
很难找到哪里出了问题,validate()的逻辑越来越复杂,请简化您的问题:)很难找到哪里出了问题,validate()的逻辑越来越复杂,请简化您的问题:)