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

如何将useState数据传递到其他.tsx文件?React Native开发问题

解决方案

核心是通过父组件传递回调函数给子组件的方式,将子组件内部的toggled状态同步到父组件,属于React生态中状态提升的通用实现方式:

第一步:修改 ToggleSettings.tsx

给组件新增回调参数,用于向父组件抛出状态变化:

import { useState } from 'react';

interface ToggleSettingProps {
  id: string
  // 新增回调props,接收子组件抛出的布尔值
  onToggleChange?: (toggledStatus: boolean) => void
}

const ToggleSettings = ({
  id,
  onToggleChange
}: ToggleSettingProps) => {
  const [toggled, setToggled] = useState(false);

  const handleToggle = (newValue: boolean) => {
    setToggled(newValue);
    // 状态变化时触发父组件传入的回调,把最新值传出去
    onToggleChange?.(newValue);
  }

  return (
   <Box>
     <Switch name={id} isChecked={toggled} onToggle={handleToggle} />
   </Box>
  );
};

export default ToggleSettings;

第二步:修改 NotificationsScreen.tsx

在父组件中定义state存储开关状态,把更新状态的方法作为回调传给子组件即可,注:你原代码里类组件声明错误,应该用class关键字而非const,下面代码已经做了修正:

import React, { Component } from 'react';
import ToggleSettings from './ToggleSettings'; // 按你实际的文件路径调整

interface NotificationsScreenState {
  mainToggleStatus: boolean
}

class NotificationsScreen extends Component<{}, NotificationsScreenState> {
  // 父组件存储主开关状态
  state: NotificationsScreenState = {
    mainToggleStatus: false
  }

  render() {
    const { mainToggleStatus } = this.state;
    return (
     <Box>
       <ToggleSettings
        id={'notif_Main'}
        // 传入回调,接收子组件传过来的开关值更新父组件state
        onToggleChange={(toggled) => this.setState({ mainToggleStatus: toggled })}
      />
      <Divider marginY="3" />
      {mainToggleStatus && (
        <>
          <ToggleSettings
            id={'notif_DailyFollowUps'}
          />
       </>
      )}
     </Box>
    );
  }
};

export default NotificationsScreen;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:27:02