作为redux动作的结果推动屏幕

时间:2018-06-02 17:54:53

标签: react-native-navigation wix-react-native-navigation

最近尝试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有点让我感到很奇怪。你们这样做的?建议赞赏!

1 个答案:

答案 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'
  }
});