作为 redux 操作的结果推送屏幕
Push a screen as a result of a redux action
最近试过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 有点奇怪。你们是怎么做到的?建议赞赏!
要从堆栈范围外推送屏幕 - 您首先需要为堆栈分配一个预定义的 id
,然后您可以通过传递堆栈的 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'
}
});
最近试过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 有点奇怪。你们是怎么做到的?建议赞赏!
要从堆栈范围外推送屏幕 - 您首先需要为堆栈分配一个预定义的 id
,然后您可以通过传递堆栈的 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'
}
});