Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 如何在react中从表单组件将数据呈现到表中?_Javascript_Reactjs_React Redux_React Router - Fatal编程技术网

Javascript 如何在react中从表单组件将数据呈现到表中?

Javascript 如何在react中从表单组件将数据呈现到表中?,javascript,reactjs,react-redux,react-router,Javascript,Reactjs,React Redux,React Router,我对react非常陌生,在建立一个基本的日程安排网站时,我试图学习react的概念。 在这里,我从输入字段获取数据并以状态存储,但如何将表单数据呈现给表组件? 下面我分享代码和文件结构 事件组件又称主要组件 import React from "react"; import {Container, Row, Table} from "react-bootstrap"; import EventModal from "./EventModalBut

我对react非常陌生,在建立一个基本的日程安排网站时,我试图学习react的概念。 在这里,我从输入字段获取数据并以状态存储,但如何将表单数据呈现给表组件? 下面我分享代码和文件结构 事件组件又称主要组件

import React from "react";
import {Container, Row, Table} from "react-bootstrap";
import EventModal from "./EventModalButton";

class EventList extends React.Component{
    render() {
        return (
            <Container fluid="md">
                <Table striped bordered hover>
                    <thead>
                    <tr>
                        <th>Title</th>
                        <th>Type</th>
                        <th>Time</th>
                        <th>Date</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr>
                        <td>Python workshop</td>
                        <td>WorkShop</td>
                        <td>12:00PM</td>
                        <td>Saturday, 29/08/2020</td>
                    </tr>
                    <tr>
                        <td>Pandemic Situation</td>
                        <td>Webinar</td>
                        <td>02:00PM</td>
                        <td>Saturday, 29/08/2020</td>
                    </tr>
                    </tbody>
                </Table>

                <Container className="row"/>
                <Row className="justify-content-center">
                    // Open Modal Form to Add new Data
                    <EventModal />
                </Row>
            </Container>
        );
    }
}
export default EventList;
import React, { useState } from "react";
import {Button, Modal} from "react-bootstrap";
import EventForm from "./EventForm";



function EventModal() {
    const [show, setShow] = useState(false);

    const handleClose = () => setShow(false);
    const handleShow = () => setShow(true);

    return (
        <>
            <Button variant="primary" onClick={handleShow}>
                Add New Event
            </Button>

            <Modal
                show={show}
                onHide={handleClose}
                backdrop="static"
                keyboard={false}
            >
                <Modal.Header closeButton>
                    <Modal.Title>New Event</Modal.Title>
                </Modal.Header>
                <Modal.Body>
                    <EventForm />
                </Modal.Body>
                <Modal.Footer>
                    <Button variant="secondary" onClick={handleClose}>
                        Close
                    </Button>
                </Modal.Footer>
            </Modal>
        </>
    );
}
export default EventModal;
从“React”导入React;
从“react bootstrap”导入{容器、行、表};
从“/EventModalButton”导入EventModal;
类EventList扩展了React.Component{
render(){
返回(
标题
类型
时间
日期
Python研讨会
车间
下午12:00
2020年8月29日,星期六
大流行情况
网络研讨会
下午2:00
2020年8月29日,星期六
//打开模式窗体以添加新数据
);
}
}
导出默认事件列表;
EventModal.js,其中包含EventForm组件

import React from "react";
import {Container, Row, Table} from "react-bootstrap";
import EventModal from "./EventModalButton";

class EventList extends React.Component{
    render() {
        return (
            <Container fluid="md">
                <Table striped bordered hover>
                    <thead>
                    <tr>
                        <th>Title</th>
                        <th>Type</th>
                        <th>Time</th>
                        <th>Date</th>
                    </tr>
                    </thead>
                    <tbody>
                    <tr>
                        <td>Python workshop</td>
                        <td>WorkShop</td>
                        <td>12:00PM</td>
                        <td>Saturday, 29/08/2020</td>
                    </tr>
                    <tr>
                        <td>Pandemic Situation</td>
                        <td>Webinar</td>
                        <td>02:00PM</td>
                        <td>Saturday, 29/08/2020</td>
                    </tr>
                    </tbody>
                </Table>

                <Container className="row"/>
                <Row className="justify-content-center">
                    // Open Modal Form to Add new Data
                    <EventModal />
                </Row>
            </Container>
        );
    }
}
export default EventList;
import React, { useState } from "react";
import {Button, Modal} from "react-bootstrap";
import EventForm from "./EventForm";



function EventModal() {
    const [show, setShow] = useState(false);

    const handleClose = () => setShow(false);
    const handleShow = () => setShow(true);

    return (
        <>
            <Button variant="primary" onClick={handleShow}>
                Add New Event
            </Button>

            <Modal
                show={show}
                onHide={handleClose}
                backdrop="static"
                keyboard={false}
            >
                <Modal.Header closeButton>
                    <Modal.Title>New Event</Modal.Title>
                </Modal.Header>
                <Modal.Body>
                    <EventForm />
                </Modal.Body>
                <Modal.Footer>
                    <Button variant="secondary" onClick={handleClose}>
                        Close
                    </Button>
                </Modal.Footer>
            </Modal>
        </>
    );
}
export default EventModal;
import React,{useState}来自“React”;
从“react bootstrap”导入{按钮,模式};
从“/EventForm”导入EventForm;
函数EventModal(){
const[show,setShow]=useState(false);
const handleClose=()=>setShow(false);
常量handleShow=()=>setShow(true);
返回(
添加新事件
新事件
接近
);
}
导出默认事件模式;
添加新日期的表单

import React from "react";
import {Button, Container, Form} from "react-bootstrap";
import CustomDatePicker from "./CustomDatePicker";

const timeSlots = [

    {
        id: 1,
        value: '11:30AM'
    },
    {
        id: 2,
        value: '12:00PM'
    },
    {
        id: 3,
        value: '12:30PM'
    },
    {
        id: 4,
        value: '01:00PM'
    },
    {
        id: 5,
        value: '01:30PM'
    },
    {
        id: 6,
        value: '02:00PM'
    },
    {
        id: 7,
        value: '02:30PM'
    },
    {
        id: 8,
        value: '03:00PM'
    },
];

const eventTypes = [
    {
        id: 1,
        value: 'Webinar',
    },
    {
        id: 2,
        value: 'Workshop',
    },
    {
        id: 3,
        value: 'Confernece',
    },
];

// for time slots
function Options({ options }) {
        return (
          options.map(option =>
              <option key={option.id} value={option.value}>
                  {option.value}
              </option>)
        );
}

// for event types
function Option({ options }) {
    return (
        options.map(option =>
            <option key={option.id} value={option.value}>
                {option.value}
            </option>)
    );
}


class EventForm extends React.Component{

    constructor() {
        super();
        this.state = {
            title: '',
            eventtype: null,
            time: null,
        }
    }

    handleTitleChange = (event) => {
        this.setState({
            title: event.target.value
        })
    };

    handleTypeChange = (event) => {
        this.setState({
            eventtype: event.target.value
        })
    };

    handleTimeChange = (event) => {
        this.setState({
            time: event.target.value
        })
    };

    handleSubmit = () => {
      alert(`${this.state.title} ${this.state.eventtype}, ${this.state.time}`)
    };

    render() {
        return (
            <Container fluid>

                <Form onSubmit={this.handleSubmit}>
                    <Form.Group controlId="Title">
                        <Form.Label>Title</Form.Label>
                        <Form.Control    placeholder="Event Title"
                                         name="title"
                                         value={this.state.title}
                                         onChange={this.handleTitleChange}/>
                    </Form.Group>

                    <Form.Group controlId="EventType">
                        <Form.Label>Event Type</Form.Label>
                        <Form.Control as="select"
                                      name="eventtype"
                                      value={this.state.eventtype}
                                      onChange={this.handleTypeChange}>
                            <Option options={eventTypes} />
                        </Form.Control>
                    </Form.Group>

                    <Form.Group controlId="Slots">
                        <Form.Label>Time Slots</Form.Label>
                        <Form.Control as="select"
                                      name="time"
                                      value={this.state.time}
                                      onChange={this.handleTimeChange}>
                            <Options options={timeSlots} />
                        </Form.Control>
                    </Form.Group>

                    <Form.Group controlId="datepicker">
                        <Form.Label>Date</Form.Label>
                        <br/>
                        <CustomDatePicker/>
                    </Form.Group>
                        <Button
                            variant="primary"
                            type="submit">
                            Submit
                        </Button>
                </Form>

            </Container>
        );
    }
}

export default EventForm;
从“React”导入React;
从“react bootstrap”导入{按钮、容器、表单};
从“/CustomDatePicker”导入CustomDatePicker;
常数时隙=[
{
id:1,
值:“上午11:30”
},
{
id:2,
值:“12:00PM”
},
{
id:3,
值:“下午12:30”
},
{
id:4,
值:“01:00PM”
},
{
id:5,
值:“01:30PM”
},
{
id:6,
值:“02:00PM”
},
{
id:7,
值:“下午2:30”
},
{
id:8,
值:“03:00PM”
},
];
常量事件类型=[
{
id:1,
价值:“网络研讨会”,
},
{
id:2,
价值:"工作坊",,
},
{
id:3,
值:“Confernece”,
},
];
//时隙
函数选项({Options}){
返回(
options.map(选项=>
{option.value}
)
);
}
//对于事件类型
函数选项({options}){
返回(
options.map(选项=>
{option.value}
)
);
}
类EventForm扩展了React.Component{
构造函数(){
超级();
此.state={
标题:“”,
eventtype:null,
时间:空,
}
}
handleTitleChange=(事件)=>{
这是我的国家({
标题:event.target.value
})
};
handleTypeChange=(事件)=>{
这是我的国家({
eventtype:event.target.value
})
};
handleTimeChange=(事件)=>{
这是我的国家({
时间:event.target.value
})
};
handleSubmit=()=>{
警报(`this.state.title}${this.state.eventtype},${this.state.time}`)
};
render(){
返回(
标题
事件类型
时隙
日期

提交 ); } } 导出默认事件形式;
到目前为止,我只知道如何在状态中存储用户输入数据,这就是为什么我现在在表中存储虚拟数据的原因。但是如何将这个EventForm.js存储在名为EventList.js的表中呢

  • 创建一个新的arrayState,它是一个对象数组
  • 当您在其他状态{title,eventType,time}中收到输入时,请使用新创建的arrayState的setArrayState将输入添加到数组状态中。(注意:必须使用“排列”操作符以确保不会擦除存储在阵列状态中的以前的对象。)
  • 然后将该数组状态传递给使用props或上下文API创建表的组件
  • 在表组件中,使用JavaScript的Array.map()函数将数据映射到表和相应的表字段中。这将根据数组的长度和存储在每个数组对象中的数据有条件地呈现表
  • 本视频演示如何在React->

    可以在视频中使用相同的原则将数组渲染到表中

  • 创建一个新的arrayState,它是一个对象数组
  • 当你