gpt4 book ai didi

javascript - 如何使用redux在react-native-router-flux中实现react-native-drawer?

转载 作者:行者123 更新时间:2023-12-02 22:51:13 26 4
gpt4 key购买 nike

我正在尝试使用 redux 在react-native-router-flux 中实现react-native-drawer。尝试以下示例:https://github.com/aksonov/react-native-router-flux/blob/master/docs/OTHER_INFO.md但仍然收到错误:元素类型无效:需要一个字符串(对于内置组件)但得到:对象。检查“DefaultRenderer”的渲染方法。

在react-native-router-flux中实现抽屉的正确方法是什么?

编辑 - 更新:但仍然收到错误“元素类型无效...”

快速注意:如果我执行 Actions.drawer,我会收到错误,但如果我执行 Actions.home,什么也不会发生,但操作 REACT_NATIVE_ROUTER_FLUX_RESET 仍在被调用

const RouterWithRedux = connect()(Router)
const store = configureStore()

export default class App extends Component {
render() {
return (
<Provider store={store}>
<RouterWithRedux>
<Scene key='root'>
<Scene component={Login} initial={true} key='login' title='Login'/>
<Scene key="drawer" component={NavDrawer} initial={true}>
<Scene component={Home} key='home' title='Home' type='reset'/>
</Scene>
</Scene>
</RouterWithRedux>
</Provider>
)
}
}

然后我在登录中按下一个按钮,它会触发 Actions. 进行导航。抽屉导航是:

import React, { PropTypes } from 'react'
import Drawer from 'react-native-drawer'
import { Actions, DefaultRenderer } from 'react-native-router-flux'

import NavDrawerPanel from './NavDrawerPanel'

export default class NavDrawer extends Component {

componentDidMount() {
Actions.refresh({key: 'drawer', ref: this.refs.navigation});
}

render() {
const state = this.props.navigationState;
const children = state.children;

return (
<Drawer
ref="navigation"
type="displace"
content={<NavDrawerPanel />}
tapToClose
openDrawerOffset={0.2}
panCloseMask={0.2}
negotiatePan
tweenHandler={(ratio) => ({
main: { opacity: Math.max(0.54, 1 - ratio) },
})}
>
<DefaultRenderer
navigationState={children[0]}
onNavigate={this.props.onNavigate}
/>
</Drawer>
);
}
}

NavDrawerPanel 是:

import React from 'react';
import {PropTypes} from "react";
import {
StyleSheet,
Text,
View,
} from "react-native";
import { Actions } from 'react-native-router-flux';

const NavDrawerPanel = (props, context) => {
const drawer = context.drawer;
return (
<View style={styles.container}>
<TouchableHighlight>
<Text>Home</Text>
</TouchableHighlight>
<TouchableHighlight>
<Text>Profile</Text>
</TouchableHighlight>
<TouchableHighlight>
<Text>Friends</Text>
</TouchableHighlight>
</View>
)
}

const styles = StyleSheet.create({
container: {
flex: 1,
padding: 30,
backgroundColor: 'black'
},
})

错误:

enter image description here

最佳答案

参见this链接...只需在第一个答案中复制并粘贴抽屉组件...尝试此代码并替换为 DefaultRenderer:

 <DefaultRenderer navigationState={children[0]} onNavigate={this.props.onNavigate}/>

关于javascript - 如何使用redux在react-native-router-flux中实现react-native-drawer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com