我有一个 this.state,我需要使用 setState 传入我的 componentDidMount,如何在 setState 中使用 bind(this) ?

2024-01-02

我在setState中已经通过Bind了,怎么办? 在此输入图像描述 https://i.stack.imgur.com/hkneq.png

类型错误:无法读取未定义的属性“setState”

我正在使用 RealTime Firebase 和 ReactJs

constructor() {
    super()
    this.app = firebase.initializeApp(firebase_config);
    this.database = this.app.database().ref().child('users');
    this.state = {
        users: []
    }
}
componentDidMount() {
  this.database.once("value", function(snapshot) {
      snapshot.forEach(function(data) {
          this.setState({users: data.val()})
      })
  });
}

render() {
   return (
    <BrowserRouter>
       <div className="App">
          <Navbar/>
          <Switch>
            <Route exact="exact" path='/' component={CampaingListClients}/>
          </Switch>
          <p>{this.state.users}</p>
       </div>
    </BrowserRouter>);
    }
}

类型错误:无法读取未定义的属性“setState”


您可以通过两种方式解决 setState 未定义问题

  1. 将您的函数更改为箭头函数

    componentDidMount() {
        this.database.once("value", snapshot => {
           snapshot.forEach(data => {
              this.setState({users: data.val()})
           })
        });
     }
    
  2. 如下所示绑定每个函数

      componentDidMount() {
         this.database.once("value", function(snapshot) {
             snapshot.forEach(function(data) {
                 this.setState({users: data.val()})
             }.bind(this)}
         }.bind(this));
       }
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我有一个 this.state,我需要使用 setState 传入我的 componentDidMount,如何在 setState 中使用 bind(this) ? 的相关文章

随机推荐

  • 以编程方式更改“默认使用此操作”

    我有普通的 电话 拨号器和新的 拨号器 应用程序 现在 如果我选中 默认情况下使用此操作 并单击 拨号器 应用程序 那么每次按下电话按钮时 拨号器 应用程序都会自动启动 但我怎样才能在代码中改变它呢 此首选项存储在哪里 这是如何映射的 这是
  • 计算椭圆尺寸与距中心点距离的关系

    我想在每次崩溃时实现尺寸的缓慢消失 换句话说 当圆最大时 椭圆的尺寸也最大 反之 收缩时则相反 到目前为止 我试图通过从中心点的距离重新映射 cSize 来实现这种影响 但在此过程中的某个地方出了问题 目前 我的椭圆尺寸正在从小到大的缓慢过
  • 通过正则表达式获取模式的不匹配部分

    在本主题中 想法是 剥离 数字 除以x通过正则表达式 gt 如何使用 Excel 正则表达式从字符串中提取广告尺寸 https stackoverflow com questions 48427343 how to extract ad s
  • 在 Windows 7 中使用 .NET Windows 服务显示消息框

    在 Windows 7 中使用 NET Windows 服务显示消息框 我们有一个 Windows 服务 用于在用户在 Windows XP 上扫描访问卡后显示确认消息框 但一旦我们迁移到 Windows 7 该弹出功能就不再起作用 正如这
  • XSL 显示属性名称

    所以 用那个
  • 如何通过 SQL 查询特定 JSON 格式的父子关系?

    我希望我的 jQuery 代码有这个 JSON projects id 1 project name Carmichael House parent id 0 children id 2 project name Carmichael Ki
  • Node.js 中的加密

    我正在尝试将以下 php 代码移植到 node js 上的 javascript mac hash hmac SHA256 string secret true coded base64 encode mac 我尝试过以下方法 var Cr
  • CSS“clip”的 Safari 渲染错误

    我在使用 Safari 时遇到以下问题 http cl ly ZlJ8 http cl ly ZlJ8 现场演示 http drpdev de labs example html http drpdev de labs example ht
  • 在AVPlayer中使用秒seekToTime

    这应该是一个简单的问题 我有一个AVPlayer播放视频文件 我希望能够跳到特定时间 但我在理解如何跳到特定时间时遇到了一些困难CMTime works 我需要以秒为单位指定时间 例如 如果我想跳到第二个 10 8 我想做这样的事情 sel
  • Windows 10 和 Visual Studio 2015

    我可以开始使用 Visual Studio 2015 预览版在预览版上构建 Windows 10 应用程序吗 或者至少开始修补和测试 3 月 23 日更新 适用于 Windows 10 技术预览版的 Visual Studio 工具 htt
  • 将 EJB 方法公开为 REST 服务

    在 J2EE 6 中 您可以将 EJB 会话 bean 公开为 REST Web 服务 如下所示 Stateless Path test public class TestSessionBean GET Produces applicati
  • 无法删除该对象,因为在 ObjectStateManager 中未找到该对象

    我收到此错误 无法删除该对象 因为在 ObjectStateManager 中未找到该对象 我的代码是 protected MyEntities sqlEntities public virtual void Delete TEntity
  • 隐藏 JComBox 框箭头

    是否可以隐藏JComboBox中显示的箭头 我尝试设置 combo getComponent 0 setSize new Dimension 1 1 但似乎不起作用 您必须为此创建一个新的组合框 UI combo setUI new Bas
  • 在 Laravel 中获取每个用户的最新消息(行)

    TL DR 需要来自每个发件人的最新消息 在我的 Laravel 应用程序中 我有两个表 Users id name 留言 id 发件人ID 收件人 ID body 创建时间 当然还有模型 用户模型 public function mess
  • HttpWeb请求错误403

    我是 C 新手 需要从 C 检索 url 大多数情况下它工作正常 但在一种情况下它会抛出错误 网址如下http whois afrinic net cgi bin whois searchtext 41 132 178 138 http w
  • ObjC 到 Swift 将 NSDictionary 转换为 NSObject : AnyObject

    我正在使用 Swift 实现 Segment com 的 iOS 库 一切都运行良好 只是停留在下面的代码转换上identify method ref https segment com docs libraries ios identif
  • 是否可以通过 cfldap 更改密码?

    一段时间以来 我一直尝试通过以下方式更改密码cfldap 连接是通过 SSL 和端口 636 建立的 cfssl basic 在登录中进行测试 我尝试了以下版本的代码
  • 如何在 Django 调试工具栏中使用日志记录?

    我想在我的 django 应用程序中的视图函数的不同点输出调试消息 的文档django 调试工具栏 http github com robhudson django debug toolbar说它使用 python 日志记录中的构建 但我找
  • 从新版 Google 地图中的嵌入地图中删除信息窗口

    在过去的几年里 从嵌入式谷歌地图中删除信息窗口很容易 只需添加iwloc near在查询字符串中 在过去的几周里 谷歌已经迁移到一种新的嵌入查询字符串格式 以配合他们的新地图产品 有谁知道如何使用新的查询字符串隐藏信息气泡 我确实想保留标记
  • 我有一个 this.state,我需要使用 setState 传入我的 componentDidMount,如何在 setState 中使用 bind(this) ?

    我在setState中已经通过Bind了 怎么办 在此输入图像描述 https i stack imgur com hkneq png 类型错误 无法读取未定义的属性 setState 我正在使用 RealTime Firebase 和 R