我的 React 应用程序代码不断给出错误“无法读取未定义的属性 'fname'”,我不明白为啥

Posted

技术标签:

【中文标题】我的 React 应用程序代码不断给出错误“无法读取未定义的属性 \'fname\'”,我不明白为啥【英文标题】:My React app code keeps giving an error "Cannot read property 'fname' of undefined" and I don't understand why我的 React 应用程序代码不断给出错误“无法读取未定义的属性 'fname'”,我不明白为什么 【发布时间】:2020-09-30 22:14:54 【问题描述】:
import React,  useState  from "react";

function App() 
  const [fullName, setFullname] = useState(
    fname: " ",
    lname: " "
  );

  function handleChange(event) 
    const  value, name  = event.target;
    setFullname(prevValue => 
      if (name === "fname") 
        return 
          fname: value,
          lname: prevValue.lname
        ;
       else if (name === "lname") 
        return 
          fname: prevValue.fname,
          lname: value
        ;
      
    );
  

  return (
    <div className="container">
      <h1>
        Hello fullName.fname fullName.lname
      </h1>
      <form>
        <input
          onChange=handleChange
          name="fName"
          value=fullName.fname
          placeholder="First Name"
        />
        <input
          onChange=handleChange
          name="lName"
          placeholder="Last Name"
          value=fullName.lname
        />
        <button>Submit</button>
      </form>
    </div>
  );


export default App;

我是 React 的初学者,刚开始使用钩子。 上面的代码呈现了一个表单,该表单应该将名字和姓氏分别作为输入,并在标题中实时更新。但是当我输入一些东西时它会抛出错误:“× ←→1 of 7 errors on the page TypeError Cannot read property 'fname' of undefined

错误在标签变量中突出显示。

【问题讨论】:

【参考方案1】:

确保名称 attr 与对象内部的属性相同。

您的setFullname 也可以简化

const [fName, lLame, setFullname] = useState(
    fName: " ",
    lLame: " "
  );

function handleChange(target: name, value) 
    setFullname(state => (...state, [name]: value));

 <input
          onChange=handleChange
          name="fName"
          value=fFame
          placeholder="First Name"
        />
        <input
          onChange=handleChange
          name="lName"
          placeholder="Last Name"
          value=lName
        />

【讨论】:

谢谢你我想通了。【参考方案2】:

handleChange 中的 if 条件失败。应该是

...
 setFullname(prevValue => 
      if (name === "fName") 
        return 
         ....
   else if (name === "lName") 
    return 
   ....

【讨论】:

对不起,和我写的不一样吗? 正如@Józef 指出的那样-“确保名称 attr 与对象内的属性相同。”所以,fname 应该是 fNamelname 应该是 lName

以上是关于我的 React 应用程序代码不断给出错误“无法读取未定义的属性 'fname'”,我不明白为啥的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security 不断给出错误 404 GET /login [重复]

“应用程序不断停止”弹出窗口并给出错误 java.lang.RuntimeException

React Axios API 调用与数组循环给出错误的顺序?

为啥我的 .gitlab-ci.yml 在纱线测试中不断失败,并出现错误“/bin/sh: 1: react-scripts: not found”?

我正在尝试在 heroku 上部署我的 node.js discord 机器人,但我不断收到错误

REACTJS 给出以下错误:TypeError: navigate.push is not a function