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

React项目TypeError报错求助:onSubmit无法读取addContact属性

解决React中TypeError: Cannot read property 'addContact' of undefined的问题

我一眼就看到问题出在你使用useContext的方式上,这是React Context里很常见的小失误。

问题根源

在你的ContactForm.jsx里,你是这样调用useContext的:

const contactContext = useContext({ ContactContext });

你把ContactContext包装在了一个对象里传给useContext,但useContext的参数必须是Context对象本身,而不是包含它的对象。这就导致contactContext变成了undefined,所以当你在onSubmit里调用contactContext.addContact时就会抛出那个错误。

修复步骤

只需要把useContext的参数改成直接传入ContactContext即可:

// 错误写法
// const contactContext = useContext({ ContactContext });

// 正确写法
const contactContext = useContext(ContactContext);

额外检查(确保万无一失)

另外还要确认你的应用组件已经被ContactState正确包裹了,比如在你的根组件(比如App.js)里应该有这样的结构:

import ContactState from './path/to/ContactState';

function App() {
  return (
    <ContactState>
      {/* 你的其他组件,包括ContactForm */}
      <ContactForm />
    </ContactState>
  );
}

如果没有这一步,即使useContext用对了,也无法获取到上下文里的内容。

修改后的完整ContactForm.jsx核心片段

import React, { useState, useContext } from "react";
import ContactContext from "./../../contact/contactContext";

const ContactForm = () => {
  // 这里修正了useContext的调用方式
  const contactContext = useContext(ContactContext);
  const [contact, setContact] = useState({
    name: "",
    sex: "Female",
    dateOfBirth: "",
    resTown: "",
    hometown: "",
    resAddress: "",
    stateOfOrigin: "",
    lgaOfOrigin: "",
    nationality: "",
    regDate: "",
    hospName: "",
    headDoctor: "",
    hospTown: "",
    onDuty: "",
    hospResAddress: "",
    hospState: "",
    hospLga: "",
    birthType: "",
    babyWeight: "",
  });

  // ... 其余代码保持不变
};

这样修改后,contactContext就能正确获取到你在ContactState里提供的addContact方法,报错应该就消失了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:17:42