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

React父组件state变更时如何触发子组件自动重新加载?

问题原因

你当前子组件无法响应父组件bar值更新的核心问题是useEffect的依赖数组为空:空依赖的useEffect只会在组件首次挂载完成后执行1次,后续props.bar发生变化时不会重新触发回调,length状态也就不会同步更新。

修改方案

提供两种可行方案,可按需选择:

方案1:补全useEffect依赖项

只需将props.bar添加到useEffect的依赖数组中,即可实现每次props.bar变化时自动重新执行回调,更新length数值:

const InfoWidget = (props) =>{
  const [length, setLength] = useState([]);
  const classes = useStyles();
  useEffect(() => {
    setLength(props.bar * 10);
  }, [props.bar]); // 此处添加props.bar作为依赖
  return(
    <Paper> 
     {length}
    </Paper>
  );
}

方案2:移除冗余状态(更优化的写法)

你的length是完全由props.bar计算得到的派生值,不需要单独用state存储,直接在渲染时计算即可,代码更精简也不会出现依赖遗漏问题:

const InfoWidget = (props) =>{
  const classes = useStyles();
  const length = props.bar * 10;
  return(
    <Paper> 
     {length}
    </Paper>
  );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 05:54:01