首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ref prop时,未定义不是对象(计算_this2_.drawer.open)

使用ref prop时,未定义不是对象(计算_this2_.drawer.open)
EN

Stack Overflow用户
提问于 2017-06-19 03:20:03
回答 1查看 687关注 0票数 0

我一直试图使用ref prop按照建议的 by these docs让react-native-drawer工作,但我得到了以下错误:undefined is not an object (evaluating _this2_.drawer.open)我已经梳理了堆栈溢出的类似问题,很难将这个错误文本与任何一个问题联系起来,为什么会发生这种情况?

代码语言:javascript
复制
import React, { Component } from 'react';
import Drawer from 'react-native-drawer'
import {
   AppRegistry,
   StyleSheet,
   Text,
   View,
   Button
 } from 'react-native';


 class Project extends Component {
   closeDrawer = () => {
     this._drawer.close()
   };
   openDrawer = () => {
    this._drawer.open()
   };
   render () {
      return (
       <Drawer
         ref={(ref) => this._drawer = ref}
         content={<Menu
                    close={this.closeDrawer()}
                    />}
          >
        <Main
          open={() => {this.openDrawer()}}
          />
        </Drawer>
      )
    }
  }

  class Menu extends Component {
    render() {
      return (
        null
      );
    }
  }

  class Main extends Component {
    render() {
      return (
      <View>
         <Button
           title='Open'
           onPress={this.props.open}
           />
       </View>
     )
   }
 }
 AppRegistry.registerComponent('Project', () => Project); 
EN

回答 1

Stack Overflow用户

发布于 2017-06-19 08:29:11

不能在回调中使用'this‘。您应该在类中定义方法,然后调用它们。

代码语言:javascript
复制
  closeControlPanel = () => {
    this._drawer.close()
  };
  openControlPanel = () => {
    this._drawer.open()
  };

然后像这样的东西

代码语言:javascript
复制
<Drawer
     ref={(ref) => this._drawer = ref}
     content={<Menu
                close={this.closeControlPanel()}
                />}
      >
    <Main
      open={() => {this.openControlPanel()}
      />
    </Drawer>

另外,

代码语言:javascript
复制
class Main extends Component {
    render() {
      return (
      <View>
         <Button
           title='Open'
           onPress={this.props.open}
           />
       </View>
     )
   }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44618647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档