【问题标题】:stack navigator return false when want to go to view当要查看时,堆栈导航器返回 false
【发布时间】:2020-03-28 11:49:27
【问题描述】:

我的应用程序启动后,最初会打开HomeScreen 组件。

我的App.js 文件如下所示:

const App = createStackNavigator({
  HomeScreen: {
    screen: HomeScreen,
    navigationOptions: {
      title: 'HomeScreen',
    },
    List: {
      screen: List,
      navigationOptions: {
        title: 'List',
      },
    },
  },
});

我的HomeScreen.js 文件如下所示:

export default class HomeScreen extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      Cars: [],
    };
    var d = new Database();
    d.initDB();
    let cars = [];
    d.listCar().then(data => {
      cars = data;
      this.setState({
        cars,
      });
    });
  }
  render() {
    return (
      <View
        style={{
          flex: 1,
          backgroundColor: 'white',
          flexDirection: 'column',
        }}>
        <MyText text="Auta" />
        <Button
          title="Audi"
          onPress={() =>
            console.log(this.props.navigation.navigate('List')) //console log for debuging
          }
        />
        <Button
          title="Volkswagen"
          onPress={() =>
            this.props.navigation.navigate('List', {car_id: 1}) //want to pass props to List.js
          }
        />
      </View>
    );
  }
}

还有我的List.js

const List = props => {
  return (
    <View>
      <Text>{props.car_id}</Text>
    </View>
  );
};

当我在HomeScreen 组件中单击标题属性为Audi 的按钮时,作为按钮回调一部分的console.log 语句返回:false

当我单击按钮 VolskwagenAudi 时,什么也没有发生。

我想从HomeScreen 组件转到List 组件,并使用道具将car_idHomeScreen 传递到List

为什么上面的代码没有将我从HomeScreen 组件重定向到List 组件?

【问题讨论】:

    标签: javascript react-native navigation


    【解决方案1】:

    您似乎已将 List 放入 HomeScreen 值中,而 React Navigation 希望将其声明在与 HomeScreen 相同的级别,如下所示:

    const App = createStackNavigator({
      HomeScreen: {
        screen: HomeScreen,
        navigationOptions: {
          title: 'HomeScreen',
        },
      }
      List: {
        screen: List,
        navigationOptions: {
          title: 'List',
        },
      },
    });
    

    【讨论】:

    • 太棒了,它有效!传递car_id 之类的属性怎么样?
    • 您可以在导航到另一个屏幕时将属性从一个屏幕传递到另一个屏幕,方法是将第二个参数传递给navigate 函数:reactnavigation.org/docs/4.x/navigation-prop/…
    • 您可以使用navigation.getParam('car_id') 检索该值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2020-12-07
    • 2015-10-31
    相关资源
    最近更新 更多