【问题标题】:Not navigating back to list after pressing Create Button按下创建按钮后未导航回列表
【发布时间】:2017-12-08 09:58:35
【问题描述】:

我的代码是here

我正在接受这个course

我在点击创建按钮后添加了一个导航回员工列表的操作,但我没有导航回来。你能帮我理解我可能做错了什么吗?

这里是动作创建者文件:

import firebase from 'firebase';
import Actions from 'react-native-router-flux';
import {
  EMPLOYEE_UPDATE,
  EMPLOYEE_CREATE
} from './types';

export const employeeUpdate = ({ prop, value }) => {
    return {
      type: EMPLOYEE_UPDATE,
      payload: { prop, value }
    };
};

export const employeeCreate = ({ name, phone, shift }) => {
const { currentUser } = firebase.auth();

  return (dispatch) => {
    firebase.database().ref(`/users/${currentUser.uid}/employees`)
      .push({ name, phone, shift })
      .then(() => {
        dispatch({ type: EMPLOYEE_CREATE });
        Actions.employeeList({ type: 'reset' });
      });
  };
};

这是我不会离开的屏幕:

【问题讨论】:

    标签: react-native redux react-native-router-flux


    【解决方案1】:

    我得到了这个工作:

    Router.js:

     const RouterComponent = () => {
        return (
           <Router sceneStyle={{ paddingTop: 0 }}>
           <Stack key="root" hideNavBar="true" >
             <Scene key="auth">
                <Scene key="login" component={LoginForm} title="Please Login" />
           </Scene>
    
           <Scene key="main">
             <Scene
               key="employeeList"
               onRight={() => Actions.employeeCreate()}
               rightTitle="Add"
               component={EmployeeList}
               title="Employees List"
               initial
            />
          <Scene key="employeeCreate" component={EmployeeCreate} 
               title="Create Employee" />
          <Scene key="employeeEdit" component={EmployeeEdit} title="Edit 
             Employee" />
        </Scene>
      </Stack>
    </Router>
     );
    };
    

    EmployeeActions.js:

     export const employeeCreate = ({ name, phone, shift }) => {
       const { currentUser } = firebase.auth();
    
     return (dispatch) => {
       firebase.database().ref(`/users/${currentUser.uid}/employees`)
        .push({ name, phone, shift })
        .then(() => {
           dispatch({ type: EMPLOYEE_CREATE });
           Actions.main({ type: 'reset' });
        });
      };
    };
    

    【讨论】:

    • 这成功了!只需将 Actions.employeeCreate 更改为 Actions.Main() 即可。但我的问题是,为什么???大声笑真的很感谢你调查这个贾里德。先生,您是一位绅士和一位学者!
    • 因为你必须告诉 react-native-router-flux 去哪个路由'bin'(如果你愿意的话)。你有两个垃圾箱:auth 和 main。你也可以做 Actions.main.employeeList()。默认情况下,将其发送到 main 会发送到 employeeList,因为 1. 这是 main 中列出的第一个场景。 2. 它有道具“initial”,将其指定为该 bin 中的初始场景。如果要导航到 main 中不是 employeeList 的另一个场景,则必须指定 Actions.main.whateverYourKeyForThatComponentIs()
    • 我确实尝试了 Actions.main.employeeList() 并且该应用程序没有导航,但我也没有收到错误。我认为起作用的是路由器正在识别“主要”场景并将我带到那里,并且由于employeeList是第一个或初始场景,这就是我最终的结果...... :)
    • 想试试 react-navigate。
    • 奇怪...我昨天用你的代码尝试了两种方法,它们都有效。这些东西会变得更糟...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多