React-Native Refs未定义

时间:2017-07-28 21:20:44

标签: javascript react-native

我正在开发一个应用程序,这是与我的错误相关的基本代码:

这是渲染功能:

render() {
 return (
  <ScrollableTabView>
    <NavigatorIOS
      translucent={false}
      initialRoute={{
        component: MenuList,
        title: '',
        passProps: { hideNavBar: this.hideNavBar,
                     showNavBar: this.showNavBar,
                     toggleFav: this.toggleFav,
                     getFavImg: this.getFavImg,
                    },
      }}
      navigationBarHidden={this.state.hideNavBar}
      style={{ flex: 1 }}
      barTintColor="#1f3157"
      titleTextColor="#f6f6f6"
      tabLabel="Menu"
    />
    <NavigatorIOS
      ref="nav"
      translucent={false}
      initialRoute={{
        component: FavoritesList,
        title: '',
        passProps: { hideNavBar: this.hideNavBar,
                     showNavBar: this.showNavBar,
                     favs: this.state.favs,
                   },
      }}
      navigationBarHidden={this.state.hideNavBar}
      style={{ flex: 1 }}
      barTintColor="#1f3157"
      titleTextColor="#f6f6f6"
      tabLabel="Favorites"
    />
    <SpecialsList tabLabel="Specials" />
  </ScrollableTabView>
);

现在,当用户在第一个NavigatorIOS中更新内容时,我正在尝试进行第二次NavigatorIOS更新。我目前已经拥有它,所以当第一个内容更新时,它调用一个函数,然后轮流调用一个函数来替换第二个函数:

toggleFav = ( item ) => {
 //if not a favorite / not in map
 if ( !this.state.favs[item.title] ){
  this.state.favs[item.title] = item;
  this.state.favs[item.title].faved = true;
 }
 else if ( this.state.favs[item.title].faved ){
  this.state.favs[item.title].faved = false;
 }
 else {
  this.state.favs[item.title].faved = true;
 }

 this.favChange();
}

favChange = () => {
 this.refs.nav.replace({
        component: FavoritesList,
        title: '',
        passProps: {
              hideNavBar: this.hideNavBar,
              showNavBar: this.showNavBar,
              favs: this.state.favs,
        },
      });
}

我现在得到的错误是this.refs.nav函数中favChange未定义。我知道它必须是this的一个问题,但我不知道如何修复它。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这可能是因为&#34;这个&#34;捆绑。 this.favChange = this.favChange.bind(this) 您可以尝试在构造函数或初始化代码中添加此代码。