在 React 中创建一个单词计数器(使用 Hooks)

简介: 在 React 中创建一个单词计数器(使用 Hooks)

创建单词计数器,上代码:

import './App.css';
import React, {useEffect, useState} from "react";
export default function App() {
    //文本
    const [text,setText] = useState('')
    //单词数
    const [wordCount,setWordCount] = useState(0)
    //字符数
    const [charCount,setCharCount] = useState(0)
    function changeHandler(e) {
        setText(e.target.value)
    }
    useEffect(() => {
        //单词数组
        const words = text.split(' ');
        //更新字数
        let wordCount = 0
        words.forEach((word) => {
            if (word.trim() !== ''){
                wordCount++
            }
        })
        setWordCount(wordCount)
        //更新字符数
        setCharCount(text.length)
    },[text])
    return (
        <div className='container'>
            <h2>自动计算输入单词数</h2>
            <div>
                <textarea
                    value={text}
                    onChange={changeHandler}
                    placeholder="输入你的暴富想法"
                ></textarea>
                <p>单词个数:{wordCount}</p>
                <p>字数:{charCount}</p>
            </div>
        </div>
    )
}

以上代码,实现了一个可以自动计算输入的单词数和字符数的文本框。


其中,useState用来定义三个状态变量:


  • text表示输入的文本,


  • wordCount表示单词数,


  • charCount表示字符数。


changeHandler函数用来处理文本框内容的变化,将输入的文本存储在text状态变量中。

useEffect函数用来监听text状态变量的变化,当text改变时,将文本按空格分割成单词数组,再遍历数组计算单词数,更新wordCount状态变量;同时,更新charCount状态变量为text的长度。最后,将输入框、单词数和字符数显示在页面上。


相关文章
|
3月前
|
机器学习/深度学习 数据安全/隐私保护 UED
淘宝图片搜索接口开发指南:从图像识别到商品匹配的全流程实现
图片搜索技术极大提升了电商用户体验。本文详解淘宝图片搜索接口的实现原理与开发实战,涵盖预处理、特征提取、比对与结果返回等核心流程,并提供可复用代码。内容还包括常见错误处理、合规性开发注意事项及多种扩展应用场景,助力开发者快速构建高效、合规的图片搜索功能。
淘宝图片搜索接口开发指南:从图像识别到商品匹配的全流程实现
|
Ubuntu 关系型数据库 MySQL
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
1376 0
libmysqlclient.so.18(libmysqlclient.so.20 libmysqlclien.so) => not found
|
Windows
windows端口冲突解决办法
windows端口冲突解决办法
462 1
windows端口冲突解决办法
|
SQL 缓存 关系型数据库
(十二)MySQL之内存篇:深入探寻数据库内存与Buffer Pool的奥妙!
MySQL是基于磁盘工作的,这句几乎刻在了每个后端程序员DNA里,但它真的对吗?其实答案并不能盖棺定论,你可以说MySQL是基于磁盘实现的,这点我十分认同,但要说MySQL是基于磁盘工作,这点我则抱否定的态度,至于为什么呢?这跟咱们本章的主角:Buffer Pool有关,Buffer Pool是什么?还记得咱们在《MySQL架构篇》中聊到的缓存和缓冲区么,其中所提到的写入缓冲区就位于Buffer Pool中。
1249 1
|
安全 Linux 数据安全/隐私保护
使用 `chage` 命令管理 Linux 用户密码过期策略
`chage` 命令用于管理Linux用户密码过期策略,包括设置密码最长有效期、警告天数、过期宽限期和账户非活动天数。例如,`chage -M 90 username` 设置密码最长有效期为90天,`chage -W 7 username` 设定到期前7天警告。确保具备足够权限(如root)并理解更改影响。此工具有助于增强系统安全和符合安全策略。
|
编解码 网络协议 程序员
【RTP 传输协议】实时视频传输的艺术:深入探索 RTP 协议及其在 C++ 中的实现
【RTP 传输协议】实时视频传输的艺术:深入探索 RTP 协议及其在 C++ 中的实现
2102 0
|
Cloud Native Docker 容器
云原生之使用docker部署filepizza文件传输工具
云原生之使用docker部署filepizza文件传输工具
373 1
|
算法
旅游规划 (25 分)(dijkstra+Floyd两种算法三种写法)
旅游规划 (25 分)(dijkstra+Floyd两种算法三种写法)
366 0
|
设计模式 负载均衡 监控
Java 中台技术盘点,这些技术你了解还远远不够(上)
对于中台(业务中台)技术开发来说主要是对基础技术栈的使用,还有就是对抽象能力的提升,因为我们是底层服务不能出错,需要不断的去做兼容性。需要具备一些 Java 技术功底,掌握设计模式,深入掌握最常用的技术原理。我们今天就一起来盘点一下 Java 业务中台常用的技术框架与一些将来可能会用到的技术。
1408 0
Java 中台技术盘点,这些技术你了解还远远不够(上)
|
开发工具 git
git commit 弹出编辑器后报错: Aborting commit due to empty commit message.
使用终端提交代码 "git commit" 能正常弹出 设置的编辑器,但是直接被空消息提交上来导致无效。 git commit 使用了插件 # git-extras 简化命令 gc == git commit 解决方法: $ git config --global core.editor "subl -w -f" "subl -f" 表示设置默认启动的编辑器,-w表示等待编辑器提交之后, -f 为一个参数 让它不要 fork。
6454 0