首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将react-native-router-flux与react-native-drawer结合使用

如何将react-native-router-flux与react-native-drawer结合使用
EN

Stack Overflow用户
提问于 2016-08-13 08:07:40
回答 2查看 9.1K关注 0票数 5

我试图以某种方式将这些与示例联系起来:

使用react-native-router-flux的react-native-drawer :遵循本文档:https://github.com/aksonov/react-native-router-flux/blob/master/docs/OTHER_INFO.md

如何将自定义抽屉放入文件中?

当我尝试这样做的时候,我总是会遇到错误:

文件: components/Drawer.js

代码语言:javascript
复制
import Drawer from 'react-native-drawer';
import ControlPanel from './ControlPanel';
import {Actions, DefaultRenderer} from 'react-native-router-flux';

export default class extends Component {
    render(){
        const state = this.props.navigationState;
        const children = state.children;
        return (
            <Drawer
              ref="navigation"
              open={state.open}
              onOpen={()=>Actions.refresh({key:state.key, open: true})}
              onClose={()=>Actions.refresh({key:state.key, open: false})}
              type="displace"
              content={<SideMenu />}
              tapToClose={true}
              openDrawerOffset={0.2}
              panCloseMask={0.2}
              negotiatePan={true}
              tweenHandler={(ratio) => ({
                main: { opacity:Math.max(0.54,1-ratio) }
              })}>
              <DefaultRenderer navigationState={children[0]} onNavigate={this.props.onNavigate} />
            </Drawer>
        );
    }
}

文件: App.js

代码语言:javascript
复制
import Drawer from './components/Drawer'

我得到了这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-13 13:24:00

通过显式定义和导出类名MyDrawer来尝试这种方法:

代码语言:javascript
复制
import React, { Component } from 'react';
import Drawer from 'react-native-drawer';
import ControlPanel from './ControlPanel';
import {Actions, DefaultRenderer} from 'react-native-router-flux';

class MyDrawer extends Component {
    render(){
        const state = this.props.navigationState;
        const children = state.children;
        return (
            <Drawer
              ref="navigation"
              open={state.open}
              onOpen={()=>Actions.refresh({key:state.key, open: true})}
              onClose={()=>Actions.refresh({key:state.key, open: false})}
              type="displace"
              content={<SideMenu />}
              tapToClose={true}
              openDrawerOffset={0.2}
              panCloseMask={0.2}
              negotiatePan={true}
              tweenHandler={(ratio) => ({
                main: { opacity:Math.max(0.54,1-ratio) }
              })}>
              <DefaultRenderer navigationState={children[0]} onNavigate={this.props.onNavigate} />
            </Drawer>
        );
    }
}


export default MyDrawer; 

将文件名更改为MyDrawer.js,然后使用以下路由导入:

代码语言:javascript
复制
import MyDrawer from './components/MyDrawer'
import TestView from './components/TestView'



  render() {
       return (
         <Router>
             <Scene key="drawer" component={MyDrawer}>
                  <Scene key="main" tabs={false} >
                     <Scene key="fireBaseTest" component={TestView} drawerImage={navToggle} />
                     //add more scenes here
                  </Scene>
             </Scene> 
         </Router>);

  }
}
票数 7
EN

Stack Overflow用户

发布于 2016-08-20 02:15:23

我没有尝试将抽屉放在单独的文件中,但我这样做了

代码语言:javascript
复制
<Drawer
     type="static"
     content={<Menu closeDrawer={ () => this.drawer.close() }/>}
     openDrawerOffset={100}
     tweenHandler={Drawer.tweenPresets.parallax}
     tapToClose={true}
     ref={ (ref) => this.drawer = ref}
>
     <Router>
          <Scene key="root">
               <Scene key="home" initial={true}/>
          </Scene>
     </Router>
</Drawer>

我没有使用太多的配置,所以我并不介意直接把它放在我有Router的地方。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38927957

复制
相关文章

相似问题

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