如何在 React Context 中传递 State

2023-11-26

我试图通过并更新一个状态useContext;

App.js

import Home from './components/Home'
const UserContext = createContext();

function App() {
  const [name, setName] = useState('Name');

  return (
      <UserContext.Provider value={{name, setName}}>
        <Home/>
      </UserContext.Provider>
  );
}

export default App;

Home.js

import UserContext from '../../App'

function Home() {
    const user = useContext(UserContext);

    return (
        <>
        <label>Your name:</label>
        <input type='text' onChange={e => user.setName(e.target.value)} />
        <p>{user.name}</p>
        </>
    )
}

export default Home;

我收到这个错误

类型错误:无法读取未定义的属性(读取“名称”);

使用 useContext 在组件之间传递状态的正确方法是如何?


您需要导出 UserContext,以便可以将其导入到需要它的组件中:

export const UserContext = React.createContext();

function App() {
  const [name, setName] = useState('Name');

  return (
    <UserContext.Provider value={{ name, setName }}>
      <Home />
    </UserContext.Provider>
  );
}

之后您可以将其导入您的应用程序组件中:

import { UserContext } '../../App'

function Home() {
    const user = useContext(UserContext);

    return (
        <>
            <label>Your name:</label>
            <input type='text' onChange={e => user.setName(e.target.value)} />
            <p>{user.name}</p>
        </>
    )
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React Context 中传递 State 的相关文章

随机推荐

  • 超越 Python 中的工厂

    从 Java 转向 Python 后 我被告知工厂不是 Pythonic 的 因此 我正在寻找 a Python 方法来执行如下操作 我过于简化了我的目标 这样我就不必描述我的整个程序 这非常复杂 我的脚本将读取人名 以及有关他们的一些信息
  • Rails 3:belongs_to、has_one 和迁移

    我是 Rails 新手 并且有 Django 背景 我已经接受了这样一个事实 模型和数据库模式在 Rails 在线 Django 中是分开的 然而 我仍在处理迁移问题 我的问题相当简单 如何使用迁移向模型添加关系 例如 我有Artist a
  • 在 matplotlib 中反转(不是反转)颜色图?

    有没有什么好的方法invert 不是反向 这很简单 请参阅在 matplotlib 中反转颜色图 matplotlib 中的颜色图 即 我想拍摄一张 png 图像 其中具有以下形式的颜色元组 1 1 0 1 并使用 matplotlib 颜
  • 如何在 Aurelia 入门应用程序(导航应用程序)中使用 JQuery UI 组件

    我可以按照入门教程中提供的步骤运行 Aurelia 应用程序 他们在骨架应用程序中使用了引导导航栏 是否可以在 Aurelia 应用程序中使用 JQuery UI 组件 如果是 请解释一下如何实现这一目标 提前致谢 是的 这是可能的 我做了
  • 在 Python 3.4 中导入表格时出现问题

    我刚刚安装了 python 的 tabulate 以便在终端中对输出进行制表 当我尝试将 tabulate 导入 python 3 4 时 它给我一个错误 ImportError No module named tabulate 但是 每当
  • VS.NET:项目引用与程序集引用

    关于从其他项目引用我们的公共代码库哪个更好 通过项目还是通过程序集 存在一些争论 我赞成引用该项目 特别是因为我们有自动化的单元测试 可以证明通用代码可以完成所需的工作 另一个阵营的想法是锁定这些项目 每月只发布一次程序集或类似的东西 然后
  • 导航栏隐藏时的假状态栏颜色

    我遇到了状态栏和导航栏的问题 默认情况下导航栏UINavigationController延伸到状态栏后面并为其着色 左屏幕截图 当使用搜索栏时 我隐藏导航栏 这会导致状态栏不着色 Apple 的邮件应用程序不存在此问题 除了创建一个带有背
  • 设置enforce_available_locales = true后,Rails I18n验证弃用警告

    你把这样的东西放在config application rb I18n enforce available locales true config i18n load path Dir Rails root join config loca
  • 使用陀螺仪滚动图像时遇到问题

    我的 iPad Air 遇到了一个奇怪的问题 我的代码在 iPad 3 iPad 4 iPhone 5S iPod 5th Gen 上运行良好 但在 iPad Air 上 我的图像会自动滚动 无需用户旋转设备 这是我的代码 property
  • 为什么 Symfony 仍然记录到 dev.log 文件,即使我没有在日志处理程序中定义它?

    在执行 Symfony 命令期间 我想将消息记录到不同的文件中 我已经阅读了 Symfony 和 Monolog 文档 它应该像我在这里描述的那样工作 请注意 我知道来自 教义 事件 等通道的消息仍将由主处理程序记录 但这对我来说并不重要
  • 如何在我的 C# 控制器中获取 Ajax 发布的数组?

    我使用 ASP NET MVC 我尝试在 ajax 中发布一个数组 但我不知道如何将它获取到我的控制器中 这是我的代码 Ajax var lines new Array lines push ABC lines push DEF lines
  • 如何获取mp3文件的大小和持续时间?

    我需要计算 mp3 文件的总长度 目前我正在使用我发现的 PHP 类 http www zedwood com article php calculate duration of mp3 如果 mp3 文件位于同一服务器中 则此操作完美 但
  • 用 Python 计算 XIRR

    我需要计算一段时间内进行的金融投资的 XIRR numpy pandas 或普通 python 中是否有任何函数可以执行此操作 参考 什么是 XIRR 原问题中接受的答案不正确 可以改进 创建了一个用于快速 XIRR 计算的包 PyXIRR
  • 最大字符串内容长度配额(8192)

    反序列化操作 CreateTransactionEntity 的回复消息正文时出错 读取 XML 数据时超出了最大字符串内容长度配额 8192 通过更改创建 XML 读取器时使用的 XmlDictionaryReaderQuotas 对象的
  • Rust 中 C++ 的 shared_ptr 的等价物是什么?

    为什么 Rust 不允许这种语法 fn main let a String from ping let b a println a b 当我尝试编译这段代码时 我得到 error E0382 use of moved value a gt
  • 清理基于 Play 框架的项目

    运行新的后Play framework 2 0基于项目 我未能清理它 生成的工作人员仍然在下面 play new myapp gt app name myapp gt template java app myapp app controll
  • swift 代码崩溃,日志:dyld:未加载库:@rpath/libswiftCore.dylib

    我调试了一个简单的swift app 它在模拟器中可以正常运行 但是在真机上运行就立即崩溃 系统版本 ios 8 xcode版本 6 0 1 崩溃日志 dyld 未加载库 rpath libswiftCore dylib 引用自 priva
  • openCV 的 HSV 色轮图像?

    我已经编写了直方图代码 我想将其用于 SVM 训练 但根本问题是 我不明白应该选择多少个最小数量的垃圾箱 以便我可以在不同颜色 红色 绿色 黄色 蓝色 橙色 的垃圾箱之间获得广泛不同的分布 那么 有人可以给我链接 发布图像吗openCV 的
  • 配置 Gunicorn:未指定应用程序模块

    我正在尝试使用 NGINX 和 Gunicorn 部署 django 项目 我不断收到 502 Bad Gateway 过去几天我一直在不停地工作 但似乎无法部署它 我已经阅读了 3 个关于 Digital Ocean 的教程 但显然它们都
  • 如何在 React Context 中传递 State

    我试图通过并更新一个状态useContext App js import Home from components Home const UserContext createContext function App const name s