Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何提交新帖子?_Javascript_Reactjs - Fatal编程技术网

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()的逻辑越来越复杂,请简化您的问题:)