#yyds干货盘点# react笔记之学习之存储到一个state对象中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# react笔记之学习之存储到一个state对象中相关的知识,希望对你有一定的参考价值。
前言
我是歌谣 我有个兄弟 巅峰的时候排名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 (
<Card className="logs-form">
<form onSubmit=formSubmitHandler>
<div className="form-item">
<label htmlFor="date">日期</label>
<input onChange=dateChangeHandler value=formData.inputDate id="date" type="date"/>
</div>
<div className="form-item">
<label htmlFor="desc">内容</label>
<input onChange=descChangeHandler value=formData.inputDesc id="desc" type="text"/>
</div>
<div className="form-item">
<label htmlFor="time">时长</label>
<input onChange=timeChangeHandler value=formData.inputTime id="time" type="number"/>
</div>
<div className="form-btn">
<button>添加</button>
</div>
</form>
</Card>
);
;
export default LogsForm;
以上是关于#yyds干货盘点# react笔记之学习之存储到一个state对象中的主要内容,如果未能解决你的问题,请参考以下文章