javascript - 在场景中响应 native 禁用抽屉

标签 javascript android ios react-native react-native-router-flux

我想禁用我的抽屉,这样它就无法在我的收银场景中访问。我不知道如何从场景中引用抽屉。我怎样才能做到这一点?我的代码如下所示:

主要:

export default class Main extends Component {
render() {
    return (
    <AppDrawer ref={c => { c ? this.drawer = c.drawer : this.drawer }}>
      <StatusBar backgroundColor='#3B373C'/>
      <AppRouter/>
    </AppDrawer>
    );
}
}

应用程序抽屉:

export default class AppDrawer extends Component {
constructor(props) {
    super(props);
    this.state = {
        disabled: false
    }
}

render() {
    return (
        <Drawer
            ref={c => this.drawer = c}
            tapToClose
            disabled={this.state.disabled}
            type="overlay"
            content={<DrawerContent />}
            openDrawerOffset={0.3}
            panCloseMask={0.2}
            closedDrawerOffset={-3}
            styles={style}
            tweenHandler={(ratio) => ({ main: { opacity: (2 - ratio) / 1.5 } })}>
    {React.Children.map(
                this.props.children, c => React.cloneElement(c, {route: this.props.route})
            )}
        </Drawer>
)
}
}

disable() {
    this.setState({disabled: true});
}

enable() {
    this.setState({disabled: false});
}

AppDrawer.propTypes = {
    children: PropTypes.node,
    route: PropTypes.object,
}

应用程序路由器:

export default class AppRouter extends Component {
render() {
var hamburgerIcon = require('../../res/image/hamburger_icon.png');
var mailIcon = require('../../res/image/hamburger_icon.png');
    return (
        <Router
      style={routerStyle.router}
      navigationBarStyle={navBarStyle.navBar}
      titleStyle={navBarStyle.navTitle}
      leftButtonStyle={navBarStyle.leftButtonStyle}
      drawerImage={hamburgerIcon}>
      <Scene key='Register' component={Register}  title='Rejestracja'     type='reset' />
      <Scene key='Profile'  component={Profile}   title='Edycja Profilu'  type='reset' />
      <Scene key='History'  component={History}   title='Trasy'           type='reset'
        rightButtonImage={mailIcon}
        onRight={this.sendMail}
        rightButtonStyle={navBarStyle.rightButtonStyle}
        rightButtonIconStyle={navBarStyle.rightButtonIconStyle} />
      <Scene key='Tracking' component={Tracking}  title='Nowa trasa'    type='reset' />
      <Scene key='Summary'  component={Summary}   title='Podsumowanie'  type='reset' />
        </Router>
    );
}

最佳答案

经过几天的尝试,我改用了 EventEmitter。这是该库的链接:https://github.com/kmend/react-native-eventemitter

关于javascript - 在场景中响应 native 禁用抽屉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41180470/

相关文章:

JavaScript:textarea 滚动了多少?

javascript - 在 Javascript 中使用 Canvas 创建图像

android - ui-router 保持 Controller Activity

ios - Tilemap 在横向时改变大小

ios - 关闭模态呈现的 View 使标签栏 Controller (某种)重置

javascript - 在点击事件上存储值

javascript - 如何删除 PowerBI Embedded iframe 滚动条(JavaScript API)?

Windows 10 中的 Android AVD 模拟器缩放问题

android - 在 Circular ViewPager 中切换 First 和 Last

ios - 以不同于父 View 的方式定位 subview