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

React/JavaScript疑问:箭头函数中为何无法访问target属性?

问题解答

这是对象解构语法的使用误区,你写的({ target: {value}})属于嵌套解构只提取内层属性的写法,并没有把target本身赋值为变量,所以自然访问不到。

拆解你的解构逻辑

当你写({ target: {value}})时,JavaScript做了这两件事:

  1. 从传入的event对象中取出target属性
  2. 再从target对象中取出value属性,把它赋值给局部变量value

整个过程里,并没有把target这个属性赋值给同名变量target——这里的target:只是用来定位内层value的路径,不是声明变量。

正确的写法

如果需要同时拿到target和value,有两种常用方式:

方式1:同时解构target和它的value

直接在解构里同时声明target变量,再嵌套提取value:

import React from 'react';

function App() {
  // 同时解构target和target.value
  const handleChange = ({ target, target: { value } }) => {
    console.log(target); // 正常输出input元素对象
    console.log(value);  // 正常输出输入值
  }
  
  return (
    <input name="firstName" onChange={handleChange} />
  );
}

export default App;

方式2:先解构target,再在函数内提取value

这种写法更清晰,适合需要用到target其他属性的场景:

import React from 'react';

function App() {
  const handleChange = ({ target }) => {
    const { value } = target;
    console.log(target); // 正常输出
    console.log(value);  // 正常输出
  }
  
  return (
    <input name="firstName" onChange={handleChange} />
  );
}

export default App;

额外提醒

你原来的代码里还有一个语法错误:在React函数组件中,不能用handleChange = () => {}这种类组件的实例属性写法,必须用const handleChange = () => {}来声明函数变量,否则会抛出语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 15:37:38