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

如何在Selector组件修改myTitle并触发Display组件重新渲染?

React组件状态传递与更新实现方案

这是典型的父子组件状态交互场景,核心通过props传递状态和更新方法来实现,直接上代码方案:

1. 主文件 App.js

这里把状态myTitle传给Display组件用于展示,把状态更新函数setMyTitle传给Selector组件用于修改状态:

import { useState } from 'react';
import Selector from './Selector';
import Display from './Display';

function App() {
  const [myTitle, setMyTitle] = useState('初始标题');

  return (
    <div className="app-container">
      <Selector setMyTitle={setMyTitle} />
      <Display myTitle={myTitle} />
    </div>
  );
}

export default App;

2. Selector.js 组件

通过props接收父组件的setMyTitle方法,这里用输入框实时触发状态更新,你也可以改成按钮点击等其他交互:

function Selector({ setMyTitle }) {
  return (
    <div className="selector">
      <label>修改标题:</label>
      <input
        type="text"
        onChange={(e) => setMyTitle(e.target.value)}
        placeholder="输入新标题"
      />
    </div>
  );
}

export default Selector;

3. Display.js 组件

通过props接收父组件的myTitle状态,当父组件状态更新时,该组件会自动重新渲染并展示最新值:

function Display({ myTitle }) {
  return (
    <div className="display">
      <h2>当前标题:</h2>
      <p>{myTitle}</p>
    </div>
  );
}

export default Display;

原理说明

  • React遵循单向数据流,父组件的状态myTitle更新后,会自动向下传递给所有依赖该状态的子组件(这里是Display),触发子组件重新渲染
  • Selector组件通过调用父组件传递的setMyTitle方法,间接修改父组件的状态,避免了子组件直接修改父组件状态的反模式

内容的提问来源于stack exchange,提问作者Anthony The Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:32:08