阵营本地导航与终极版
问题描述:
我是新的阵营本地和终极版。我打算使用导航器组件进行导航。例如,有一个按钮。当它被按下时,应用程序将导航到另一个视图。我不知道我是否应该叫推直接onPress或者我应该叫派遣第一,然后调用基于状态推?阵营本地导航与终极版
P.S.
例如,我有3个分量。一个是集装箱(LaunchContainer):
export default class LaunchContainer extends Component {
renderScene(route,navigator) {
return <route.component {...route.passProps}
title={route.name} navigator={navigator} />
}
render() {
const initialScreen = FrontScreen
return (
<Navigator style={{flex:1}}
initialRoute={{name:'Launch',component:initialScreen}}
renderScene={this.renderScene} />)
}
}
const screenSelector = (store) => {
return {
inLoginScreen: store.launch.isInLoginScreen
}
}
module.exports = connect(screenSelector)(LaunchContainer)
容器内的初始画面FrontScreen:
export default class FrontScreen extends Component {
render() {
return (
<View style={styles.container}>
<TouchableHighlight onPress={()=> this.props.dispatch(switchToLogin())}>
<Text style={styles.btnText}>LOG IN</Text>
</TouchableHighlight>
</View>
)
}
}
当登录按钮点击后,我想通过推出LoginScreenLaunchScreen。如您所见,当用户单击登录按钮时,将会发出一个动作,然后selectScreen函数被reducer调用。
我的问题是如何以及何时应该推登录组件?
答
你发送你的组件内的操作。例如,您可以使用sagas来监听商店中的特定操作,然后执行基于承诺的(异步)操作。
function* saga_example() {
yield take('CHANGE_TO_HOME_SCENE')
yield put({ type: 'SHOW_WAITING_MODAL' })
const response = yield call(expensiveFunction)
yield put({ type: 'EXPENSIVE_RESULT', response.data})
yield put({ type: 'HIDE_WAITING_MODAL' })
}