Jo *_* Ko 6 react-jsx react-native redux
我使用以下组件来创建React Native + Redux应用程序:
我试着完全按照提供的关于如何实现抽屉的示例,但是当导航到应该显示抽屉的地方时,使用Actions.drawer
,我得到错误:
但是,如果我尝试导航到场景,通过Actions.home
,在抽屉场景内,没有任何反应,但动作REACT_NATIVE_ROUTER_FLUX_RESET
仍在通过调用redux-logger
.
完全按照例子尝试但没有运气.我能做错什么?
这是我使用Redux设置的场景:
// @flow
import React, { Component } from 'react'
import {
ActionConst,
Actions,
Router,
Scene,
} from 'react-native-router-flux'
import {
Provider,
connect,
} from 'react-redux'
import configureStore from './store/configureStore'
import Login from './components/Login'
import Home from './components/Home'
import NavDrawer from './components/NavDrawer'
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}>
<Scene component={Home} key='home' title='Home' type='reset' initial={true}/>
</Scene>
</Scene>
</RouterWithRedux>
</Provider>
)
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在Login中按下一个按钮,它会触发Actions.
导航到.
NavDrawer是:
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 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>
);
}
}
Run Code Online (Sandbox Code Playgroud)
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 onPress={Actions.home}>
<Text>Home Page</Text>
</TouchableHighlight>
<TouchableHighlight onPress={Actions.login}>
<Text>Login Page</Text>
</TouchableHighlight>
</View>
)
}
const styles = StyleSheet.create({
container: {
flex: 1,
padding: 30,
backgroundColor: 'black'
},
})
Run Code Online (Sandbox Code Playgroud)
编辑 以下是在场景+ Redux设置中导入的内容:
// @flow
import React, { Component } from 'react'
import {
ActionConst,
Actions,
Router,
Scene,
} from 'react-native-router-flux'
import {
Provider,
connect,
} from 'react-redux'
import configureStore from './store/configureStore'
import Login from './components/Login'
import Home from './components/Home'
import NavDrawer from './components/NavDrawer'
Run Code Online (Sandbox Code Playgroud)
编辑2 - console.log(this.props)
在组件Login中执行console.log(this.props):
编辑3 - 在NavDrawer.js中的console.log(this.props)
NavDrawer永远不会被渲染,因此console.log(this.props)不会被记录
但是在NavDrawer.js和Actions.home中使用console.log(this.props),我得到:
在NavDrawer.js和Actions.drawer中使用console.log(this.props),我得到:
不确定这是否是问题所在,但您似乎没有在 NavDrawerPanel 组件上导入 TouchableHighlight,因此:
import {
StyleSheet,
Text,
View,
TouchableHighlight
} from "react-native";
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1510 次 |
最近记录: |