You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目出现'setCurrentItem'已声明未使用ts(6133)报错如何解决?

React待办应用setCurrentItem未使用报错修复方案

报错原因

这个TypeScript警告'setCurrentItem' is declared but its value is never read.ts(6133)的触发逻辑很明确:你通过useState声明了状态修改函数setCurrentItem,但在整个组件代码中没有调用过它。
同时你当前的输入框是受控组件(绑定了value属性到currentItem状态),缺少对应的onChange更新逻辑,实际运行时输入框也无法输入任何内容。

修复步骤

你只需要给输入框添加onChange事件监听,调用setCurrentItem同步用户输入的内容即可,同时可以补充表单提交的逻辑避免点按钮无响应:

修改后的Todoform.js完整代码

import React, { useState } from 'react';

function Todoform() {
    // 初始化空字符串更合理,null会导致控制台受控组件切换为非受控的警告
    const [currentItem, setCurrentItem] = useState('');

    // 新增输入框内容变化处理函数
    const handleInputChange = (e) => {
        setCurrentItem(e.target.value);
    };

    // 新增表单提交处理函数
    const handleSubmit = (e) => {
        e.preventDefault();
        if (currentItem.trim()) {
            // 这里可以后续加添加待办的逻辑,比如把currentItem存到待办列表里
            console.log('新增待办:', currentItem);
            // 提交后清空输入框
            setCurrentItem('');
        }
    };

    return (
      <form className='To-do' onSubmit={handleSubmit}>
       <input 
          type='text'
          placeholder='Add a todo'
          value={currentItem}
          name='text'
          className='to-do input' 
          onChange={handleInputChange}
      />
      <button className="to-do button">Add To-do</button>
      </form>
    );
}

export default Todoform;

补充说明

  • 原来的useState初始值设为null会引发控制台警告:组件从受控变为非受控,改成初始值为空字符串''就可以避免这个问题
  • 给form绑定onSubmit事件后,点击按钮或者按回车都可以触发表单提交逻辑,符合常用交互习惯

内容的提问来源于stack exchange,提问作者Janice John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:54:00