#yyds干货盘点# react笔记之学习之存储到一个state对象中

2022-12-21 10:20:25 来源:51CTO博客


【资料图】

前言

我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 微信公众号前端小歌谣 关注公众号带你进入前端学习交流群

代码案列

import React, {useState} from "react";import Card from "../UI/Card/Card";import "./LogsForm.css";const LogsForm = () => {    /*    *   当表单项发生变化时,获取用户输入的内容    * */    // 创建三个变量,用来存储表单中的数据    // let inputDate = "";    // let inputDesc = "";    // let inputTime = 0;    // const [inputDate, setInputDate] = useState("");    // const [inputDesc, setInputDesc] = useState("");    // const [inputTime, setInputTime] = useState("");    // 将表单数据统一到一个state中    const [formData, setFormData] = useState({        inputDate:"",        inputDesc:"",        inputTime:""    });    // 创建一个响应函数,监听日期的变化    const dateChangeHandler = (e) => {        // 获取到当前触发事件的对象        // 事件对象中保存了当前事件触发时的所有信息        // event.target 执行的是触发事件的对象(DOM对象)        //console.log(e.target.value);        // setInputDate(e.target.value);        setFormData({            ...formData,            inputDate: e.target.value        });    };    // 监听内容的变化    const descChangeHandler = (e) => {        // 获取到当前触发事件的对象        // 事件对象中保存了当前事件触发时的所有信息        // event.target 执行的是触发事件的对象(DOM对象)        //console.log(e.target.value);        // setInputDesc(e.target.value);        setFormData({            ...formData,            inputDesc: e.target.value        });    };    //监听时长的变化    const timeChangeHandler = (e) => {        // 获取到当前触发事件的对象        // 事件对象中保存了当前事件触发时的所有信息        // event.target 执行的是触发事件的对象(DOM对象)        //console.log(e.target.value);        // setInputTime(e.target.value);        setFormData({            ...formData,            inputTime: e.target.value        });    };    // 当表单提交时,汇总表单中的数据    /*    *   在React中,通常表单不需要自行提交    *       而是要通过React提交    * */    const formSubmitHandler = (e) => {        // 取消表单的默认行为        e.preventDefault();        // 获取表单项中的数据日期、内容、时长        // 将数据拼装为一个对象        const newLog = {            date: new Date(formData.inputDate),            desc: formData.inputDesc,            time: +formData.inputTime        };        // 清空表单项        setFormData({            inputDate: "",            inputDesc: "",            inputTime: ""        });        console.log(newLog);        /*        *   提交表单后如何清空表单中的旧数据        *       现在这种表单,在React我们称为非受控组件        *        *   我们可以将表单中的数据存储到state中,        *       然后将state设置为表单项value值,        *       这样当表单项发生变化,state会随之变化,        *       反之,state发生变化,表单项也会跟着改变,这种操作我们就称为双向绑定        *       这样一来,表单就成为了一个受控组件        *        *        *        * */    };    return (                    
);};export default LogsForm;

标签: 触发事件 发生变化 所有信息

上一篇:环球热头条丨创建使用 RESTful Web 服务的应用程序的过程
下一篇:天天观天下!构建超媒体驱动的 RESTful Web 服务