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

React+Vite+pnpm Todo项目:ESLint提示onSubmit缺少props校验求助

解决ESLint提示“onSubmit is missing in props validation”的问题

这个错误是因为ESLint的react/prop-types规则要求组件接收的props必须做类型校验,你的TaskForm组件使用了props.onSubmit但没有给这个prop定义校验规则,所以触发了报错。

解决方法:添加PropTypes校验

  1. 先安装prop-types依赖(如果还没装的话):
pnpm add prop-types
  1. 修改组件代码,导入PropTypes并添加props校验:
import { useState } from 'react'
import '../stylesheets/TaskForm.css'
import uuid from 'react-uuid'
import PropTypes from 'prop-types' // 导入PropTypes

function TaskForm(props) {
  const [input, setInput] = useState('')

  const handleChanging = e => {
    setInput(e.target.value)
  }

  const handleSending = e => {
    e.preventDefault()
    
    const newTask = {
      id: uuid(),
      text: input,
      done: false
    }

    props.onSubmit(newTask)
  }

  return (
    <form
      className='task-form'
      onSubmit={handleSending}>
      <input
        className='task-input'
        type='text'
        placeholder='Make a new to-do ...'
        name='text'
        onChange={handleChanging}
      />
      <button className='task-button'>
        Add task
      </button>
    </form>
  )
}

// 添加props校验规则
TaskForm.propTypes = {
  onSubmit: PropTypes.func.isRequired // 声明onSubmit是必填的函数类型
}

export default TaskForm

其他可选方案(不推荐)

  • 如果不想用PropTypes,也可以在ESLint配置里关闭react/prop-types规则,但这样会失去props类型校验的保障,不利于代码维护。
  • 如果你用的是TypeScript,可以通过定义接口来约束props类型,替代PropTypes。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:10:00