最近尝试https://wix.github.io/react-native-navigation/v2/#/ 据我所知,v2中解决的问题之一是通过redux操作推动屏幕。基本上我仍然怀疑哪个是在组件外部使用导航器的正确方法。
export function loginUser(user, componentId) {
return async (dispatch) => {
dispatch({ type: ActionTypes.LOGIN_PENDING })
Api.loginUser(user)
.then((response) => {
// success
Navigation.push(componentId, { component: { name: 'Profile' }})
})
.catch((err) => {
dispatch({
type: ActionTypes.LOGIN_ERROR,
payload: { ...err.response.data, status: err.response.status },
})
})
}
}
传递componentId有点让我感到很奇怪。你们这样做的?建议赞赏!
答案 0 :(得分:0)
从堆栈范围外推出屏幕 - 首先需要为堆栈分配预定义的id
,然后您可以通过传递堆栈轻松地从操作中推送它。 s id,而不是从组件传播到您的操作的某个componentId。
首先,为您的堆栈分配一个ID:
const stack = {
id: 'MyStack', // This will allow you to interact with the stack from your actions
children: [
{
component: {}
},
{
component: {}
}
],
options: {
}
}
然后,将屏幕推到与MyStack
id:
Navigation.push('MyStack', {
component: {
name: 'MyComponent'
}
});