React 通过一个输入内容加入列表案例熟悉 Hook 基本使用

这篇具有很好参考价值的文章主要介绍了React 通过一个输入内容加入列表案例熟悉 Hook 基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们创建一个react项目 在src下创建components文件夹
在下面创建一个index.jsx
index.jsx 参考代码如下

import React, { useState } from "react";

const useInputValue = (initialValue) => {
    const [value,setValue] = useState(initialValue);
    return {
        value,
        onChange: e => setValue(e.target.value),
        clearValue: () => setValue("")
    }
}

const TodoForm = ({ onSubnit }) => {
    const { clearValue,...text } = useInputValue("");
    function onSubeitHandler(e){
        e.preventDefault();
        onSubnit(text.value);
        clearValue("");
    }
    return (
        <form onSubmit = { onSubeitHandler }>
            <input type="text" { ...text }/>
        </form>
    )
}

export default TodoForm

首先 我们通过一个比较典型的方法定义了一个用于声明表单元素绑定响应式数据的的函数useInputValue
接收一个参数 用于做响应式数据的默认值 然后暴露他的value 同时 绑定了一个onChange
onChange这个事件大家应该并不陌生 就是表单元素内容放生变化时
这里的意思就是 当 onChange 触发说明输入框或者其他表单元素内容已经变化了 那么 我们就执行setValue(e.target.value),
setValue是通过useInputValue声明出来用于修改响应式数据的函数 就是通过setValue将表单修改后的内容写入到响应式数据的内容当中
这个写法还是比较正规的 GitHub 很多案例采用这种方式
然后 我们自己写了一个clearValue 用于手动清空这个数据

然后 我们在开始执行了

const { clearValue,...text } = useInputValue("");

意识 我要一个clearValue单独拿出来用 然后 整个方法返回的那个对象 给我装在这个text 中
因为 value和onChange事件的逻辑一定要在一起 不然就出问题了

然后 我们给表单绑定了 onSubmit 事件 用于监听它提交 因为 我们就一个输入框 直接按回车 表单就提交内容了
然后绑定的事件逻辑是onSubeitHandler
首先 进入事件 我们最先执行

e.preventDefault();

阻止元素的默认行为 因为表单提交会跳转的 我们要拦截掉他的这个行为 不然你也可以不加这个看一下 就会自己跳转
然后 我们执行

onSubnit(text.value);

首先 参数来讲 text是通过useInputValue声明是获取的 那么 他的value就是这个响应式数据的值
调用了onSubnit
这个 onSubnit 是 父组件给的
React 通过一个输入内容加入列表案例熟悉 Hook 基本使用
可能大家看到不是很明白 或者 我们其实可以这样写
React 通过一个输入内容加入列表案例熟悉 Hook 基本使用
函数模式下 接受的第一个参数 就是props 为了方便 直接 { onSubnit }
意思就是 拿取 props中的 onSubnit
然后 调用了刚刚弄出来的 clearValue 清空响应式数据

然后 我们编写 src下的 App.js代码如下

import React,{ useState } from "react"
import Index from "./components/index.jsx"

const Appind = () => {
  
  const [todos,setTodos] = useState([]);

  function setValue(text) {
    setTodos([{ text },...todos]);
  }

  return (
    <div>
      <Index onSubnit={ setValue }/>
      <div>
          {
            todos.map((element,index) => {
              return (
                <div key={index}>
                  { element.text } 
                </div>
              )
            })
          }
      </div>
    </div>
  );
};

export default Appind;

这里 我们先导入了刚刚写的 index 组件 然后调用
声明了一个 todos 响应式数据 默认值是一个空数组
然后 声明setTodos 用于修改todos响应式数据

然后我们之前说过 index.jsx组件需要父组件给一个函数onSubnit
这里 我们给了setValue
里面的逻辑就是 接受到text 也就是index组件传过来的 text.value
将他通过ES6数组合并的方法与自身已有下标进行合并
然后通过 setTodos 修改值

然后 在index组件下写了一个循环 输出了todos数组的内容
我们运行项目
React 通过一个输入内容加入列表案例熟悉 Hook 基本使用
我们在输入框中输入内容 然后按回车 内容就会通过onSubnit 一个一个与todos合并 加载到下面的循环元素中去
React 通过一个输入内容加入列表案例熟悉 Hook 基本使用
这个按理的逻辑 大家还是可以好好去演示一下的 如果看懂了 收获会比较大文章来源地址https://www.toymoban.com/news/detail-485783.html

到了这里,关于React 通过一个输入内容加入列表案例熟悉 Hook 基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React实现文本框输入文字内容动态给图片添加文字信息(多个)并生成新的图片

    收到这个需求的时候,我的内心是崩溃的,脑子里已经跑过一万匹草泥马,内心想这种事为啥不交给ps去做,哪怕是手机里图片编辑也可以做到吧,专业的事交给专业的工具去干不就好了,何必出这种XX需求。后来想想就释然了,反正拿钱干活,干啥不是干,只要给钱,再XX的

    2024年02月06日
    浏览(54)
  • chatgpt赋能python:Python中如何输入一个列表

    输入一个列表是Python编程的基本任务之一。列表可以看做是一种序列,其中包含多个元素,用逗号隔开,并用方括号括起来。在Python中,列表是一种非常常见的数据类型,常用于存储和处理一系列相关的数据。 本文将介绍Python中如何输入一个列表,包括几种不同的方法和代码

    2024年02月09日
    浏览(55)
  • chatgpt赋能python:Python中如何输入一个列表?

    如果你正在使用Python编程语言,那么输入一个列表是很常见的任务。列表是Python中最常用的数据类型之一,它允许我们在一个变量中存储多个值。在这篇文章中,我们将介绍如何使用Python语言输入一个列表,并探究一些最佳实践来优化输入过程。 在Python中,列表是一个有序的

    2024年02月08日
    浏览(54)
  • python通过selenium获取输入框的文本值爬取编辑框内容

    以百度首页的输入框为例,当输入‘你好‘后,html中的value的值会变成‘你好’ 运行代码得到以下效果

    2024年02月04日
    浏览(78)
  • Web 自动化测试案例——关闭某视频网站弹出广告以及打开登录框输入内容

    人生苦短,我用Python。许久没写博客了,今天又是久违的参与话题的讨论,话题的内容是: 如何入门 Python 的? 这个话题对于我来说有点小尴尬,因为我没有系统的学习过 Python 这门语言,只不过在写些算法题、小demo接触过,还有就是帮朋友搞大数据作业时(爬取数据、分析

    2024年02月10日
    浏览(77)
  • Web 自动化测试案例(入门级)——关闭某视频网站弹出广告以及打开登录框输入内容

    人生苦短,我用Python。许久没写博客了,今天又是久违的参与话题的讨论,话题的内容是: 如何入门 Python 的? 这个话题对于我来说有点小尴尬,因为我没有系统的学习过 Python 这门语言,只不过在写些算法题、小demo接触过,还有就是帮朋友搞大数据作业时(爬取数据、分析

    2024年02月06日
    浏览(69)
  • js 正则表达式 验证 ip列表--详情:页面中一个输入框,可输入1个或多个IP,使用英文逗号隔开...

    var   isIp =  function   (){        var    regexp = /^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/;                       return    function   (value){            var    valid = regexp.test(value);            if   (!valid){   //首先必须是 xxx.xxx.xxx.xxx 类型的数字,如果不是,返回false   

    2024年02月11日
    浏览(47)
  • 通过训练NLP制作一个自己的简易输入法

    最近开始研究NLP,然后根据手写CV UP主的视频,写了一个N Gram的NLP模型,算是该领域里的hello world吧。然后我又添加了几行代码实现了一个 非常简易的输入法 。 项目说明: 数据集可以自创,导入txt文件即可; 单词联想功能:输入前两个单词,预测(联想)第三个单词【也就是

    2024年02月08日
    浏览(62)
  • 我是如何在react中把一个集成了html,css的内容放到页面中的

    首先把html,css内容进行一个变量化,然后利用useState()去初始化一个变量,最后同通过一个标签属性就好了dangerouslySetInnerHTML={变量} 通过这样我把 typora 导出的 html 就可以直接放到上面展示了。

    2024年02月05日
    浏览(57)
  • css新闻列表案例(li标签和a标签各自控制一个背景图片)

    !DOCTYPE html html lang=\\\"en\\\" head   meta charset=\\\"UTF-8\\\"   meta http-equiv=\\\"X-UA-Compatible\\\" content=\\\"IE=edge\\\"   meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"   title新闻列表/title   style     * {       margin: 0;       padding: 0;       box-sizing: border-box;     }     li {       list-style: none;     }  

    2024年01月19日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包