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

如何防止重新赋值从组件Props解构出的属性?

解构组件属性后重新赋值的问题解答

重新赋值解构出的组件属性属于反模式吗?

属于。React组件props遵循单向数据流和不可变性原则,props由父组件传入,子组件仅负责使用而非修改。解构后的变量本质上还是props的引用,重新赋值会破坏数据流向的可追踪性,让代码逻辑变得混乱,其他开发者可能误将其当作组件内部状态,增加维护成本。

如何在编译/代码检查阶段阻止这种操作?

TypeScript类型约束方案

在解构props时,将变量声明为const,TypeScript会在编译阶段直接禁止重新赋值:

import React from 'react';

interface ComponentProps {
  readonly name: string;
}

const FnComponent = (props: Readonly<ComponentProps>) => {
  const { name } = props;
  // name = '123' // 此处TypeScript会抛出编译错误:无法分配到 "name" ,因为它是常数
  return <div>{name}</div>;
};

如果想简化写法,也可以把解构逻辑移到函数内部用const声明,避免参数变量被意外修改。

ESLint规则约束方案

启用ESLint的no-param-reassign规则,该规则会禁止对函数参数(包括解构出的参数变量)进行重新赋值。在ESLint配置文件中添加:

{
  "rules": {
    "no-param-reassign": ["error", { "props": true }]
  }
}

开启后,只要出现修改解构参数的代码,ESLint就会抛出错误提示,在代码提交前拦截这类问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:15:56