【问题标题】:How to implement slider menu in react Native如何在 React Native 中实现滑块菜单
【发布时间】:2016-05-27 08:31:10
【问题描述】:

我是新手。 我需要在 React-native 中开发滑块菜单。 我按照以下链接进行操作,但这不是我想要的 http://www.reactnative.com/a-slide-menu-inspired-from-android-for-react-native/

实际上我需要我在此处附加的图像。

请帮帮我..

【问题讨论】:

    标签: ios facebook reactjs react-native


    【解决方案1】:

    你可以在 github 上查看这个完整的 sidemenu 项目。本项目包含ToolbarAndroid、路由、DrawerLayoutAndroid、溢出菜单等组件。

    https://github.com/darde/react-native-sidemenu

    【讨论】:

      【解决方案2】:

      我已将an example 那个implements react-native-router-flux 组件添加到react-native-drawer。通过这种方式,它提供了一个简单的跨平台脚​​手架。

      【讨论】:

      • 对于稍后到达的任何人,此示例已弃用:“已弃用 - 此 repo 使用过时版本的 react-native-router-flux 和 react-native-drawer。”
      【解决方案3】:

      这个 react native 包非常广泛,使用起来非常好:

      https://github.com/root-two/react-native-drawer

      这只是我的代码的一个 sn-p,您可以创建一个带有调用 openDrawer 方法的按钮的菜单栏,并使用此抽屉您可以将动画设置为您喜欢的任何方式,并在其中包含一个滚动视图抽屉本身。希望这会有所帮助!

      var React = require('react-native');
      var {
        StyleSheet,
        Component,
        View,
        Text,
        Navigator,
        TouchableHighlight,
        TouchableOpacity,
      } = React;
      
      var styles = require('./styles');
      var Drawer = require('react-native-drawer')
      
      var drawerStyles = {
        drawer: {
          shadowColor: "#000000",
          shadowOpacity: 0.8,
          shadowRadius: 0,
        }
      }
      
      var MainPage = React.createClass({
      
        getInitialState: function(){
          return {
            drawerType: 'overlay',
            openDrawerOffset:.3,
            closedDrawerOffset:0,
            panOpenMask: .1,
            panCloseMask: .9,
            relativeDrag: false,
            panStartCompensation: true,
            openDrawerThreshold: .25,
            tweenHandlerOn: false,
            tweenDuration: 550,
            tweenEasing: 'easeInOutQuad',
            disabled: false,
            tweenHandlerPreset: null,
            acceptDoubleTap: true,
            acceptTap: true,
            acceptPan: true,
            rightSide: false,
            showView: true,
          }
        },
      
        setDrawerType: function(type){
          this.setState({
            drawerType: type
          });
        },
      
        openDrawer: function(){
          this.refs.drawer.open();
        },
      
        closeDrawer: function(){
          this.refs.drawer.close();
        },
      
        setStateFrag: function(frag){
          this.setState(frag);
        },
      
      
          render: function() {
      
          var menu = <Menu 
                        closeDrawer={this.closeDrawer}
                        navigator={this.props.navigator}  />;
      
      
          return (
            <Drawer
              ref="drawer"
              onClose={this.onClose}
              type={this.state.drawerType}
              animation={this.state.animation}
              openDrawerOffset={this.state.openDrawerOffset}
              closedDrawerOffset={this.state.closedDrawerOffset}
              panOpenMask={this.state.panOpenMask}
              panCloseMask={this.state.panCloseMask}
              relativeDrag={this.state.relativeDrag}
              panStartCompensation={this.state.panStartCompensation}
              openDrawerThreshold={this.state.openDrawerThreshold}
              content={**YOURCUSTOMENU**}
              styles={drawerStyles}
              disabled={this.state.disabled}
              tweenHandler={this.tweenHandler}
              tweenDuration={this.state.tweenDuration}
              tweenEasing={this.state.tweenEasing}
              acceptDoubleTap={this.state.acceptDoubleTap}
              acceptTap={this.state.acceptTap}
              acceptPan={this.state.acceptPan}
              changeVal={this.state.changeVal}
              negotiatePan={false}
              side={this.state.rightSide ? 'right' : 'left'}
              >
              <View>
                <**YOURTOOLBAR** onPress={this.openDrawer}/> 
                <**YOURCONTENT_VIEW**/>
              </View>
            </Drawer>
      
          );
        },
      
      
      
      });
      
      
      
      module.exports = MainPage;
      

      【讨论】:

      • npm i --save react-native-navigation-drawer 安装抽屉后我给出“无效目录/User/node_module/react-native-navigation-drawer”
      • 你应该运行 npm install react-native-drawer --save (去掉“导航”这个词,这是一个不同的模块)。确保从 RN 项目的根文件夹中运行它。
      • 我在IOS中需要incredibleandros.com/slidingpanel-android-example这样的功能
      • 这里'CustomeMenu、Toolbar、ContentView如何实现那些
      • 自定义菜单本质上应该只是一个滚动视图,工具栏只是一个占据屏幕顶部某些部分的视图(或者您可以查看 androidToolbar),而 contentview 就是您想要的任何内容出现在屏幕上。
      【解决方案4】:

      据我了解,您想使用hamburger button 调整滑块菜单。

      虽然react-native-navigation-drawer

      这可以通过SliderMenutoogleSlideMenu 函数来实现。

      一个简单的例子可能是:

      import React, {
        View,
        Text,
        ScrollView,
      } from 'react-native';
      
      import SlideMenu from 'react-native-navigation-drawer';
      
      
      var BasicExample = React.createClass({
        render() {
          return (
            <View style={styles.container}>
              <View>
                <Text onPress={() => this._slideMenu.toogleSlideMenu()}> Your status bar </Text>
              </View>
              <SlideMenu
                ref={(c) => this._slideMenu = c}
                menu={<Menu />} 
                >
                <View>
                  <Text>Your content</Text>
                </View>
              </SlideMenu>
            </View>
          );
        }
      });
      
      var Menu = React.createClass({
        render() {
          return (
            <View style={styles.container}>
              <ScrollView
                contentContainerStyle={styles.contentContainer}
                style={styles.scrollView}>
                <Text>Gallery</Text>
                <Text>Latest</Text>
                <Text>Events</Text>
                <Text>Update</Text>
              </ScrollView>
            </View>
          );
        }
      });
      

      【讨论】:

      • 感谢您的回复。当我要尝试这个时。它说.invalide 目录/User/node_module/react-native-navigation-drawer。我安装了 react-native-navigation-drawer.but 那条消息给了我..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      相关资源
      最近更新 更多