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

React新手求助:点击DataGrid行后State变量无法传递给子组件

React State传递问题修复方案

核心错误点及修正步骤:

  1. 错误更新State
    你直接给State的setter函数赋值,这完全不符合React的State更新规则。正确的做法是调用setter函数:

    const handleOnCellClick = (params) => {
      setOpen(true);
      const name = params.row; // 声明变量避免全局污染
      setsendRowInfo(params.row); // 调用setter更新状态
    };
    
  2. 错误传递State给子组件
    你传递的是State的setter函数,而不是实际的State值,子组件自然拿不到行数据:

    // 错误写法
    <MyForm send={{setsendRowInfo}} />
    // 正确写法
    <MyForm send={sendRowInfo} />
    
  3. 子组件错误处理Props
    直接给setter赋值是无效的,要么直接使用Props,要么用useEffect同步到内部State:

    function MyForm(props) {
      // 方式1:直接使用Props
      console.log(props.send);
    
      // 方式2:如需同步到内部State
      const [rowResults, setrowResults] = useState(props.send);
      useEffect(() => {
        setrowResults(props.send);
      }, [props.send]); // 监听Props变化更新State
    
      console.log(rowResults);
    }
    
  4. State声明位置错误
    React组件的State必须在组件函数内部声明,不能放在外部:

    function DataTable(){
      const [sendRowInfo, setsendRowInfo] = useState([]); // 移到组件内部
      const [open, setOpen] = useState(false); // 补充open的State声明(原代码缺失)
      // ...其他代码
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:42:54