使用 React Navigation 传递的参数中的奇怪行为

Odd behavior in passed params with React Navigation

屏幕如下:

import React from 'react';
import { View, StyleSheet, Image, TouchableOpacity, Text } from 'react-native';
import { NavigationActions } from 'react-navigation'

export default class ContentScreen extends React.Component {    
  render() {
    const { state } = this.props.navigation;
    const { code } = state.params.code
    return(
      <Text>CONTENT GOES HERE: {JSON.stringify(state)} / '{code}'</Text>
    )
  }
}

以及导航调用:

<TouchableOpacity key={k} onPress={() => {navigate("Content", {code: k})}} style={styles.listing}>

下面是显示的内容:

CONTENT GOES HERE: {"params":{"code":"222"},"key":"id-151010...","routeName":"Content"} / ''

这真的是@(#$ 很奇怪。该值显然存在于 state.params.code,从 JSON 字符串可以看出,但是当访问时,它不存在。Object.values(state.params)Object.keys(state.params) 给出了预期的结果(["code"]["222"])。

那么,关于正在发生的事情有什么想法吗?或者关于如何进一步调查的想法?

看起来你解构的层次太深了。

const { code } = state.params.code;

这基本上就是找this.props.state.params.code.code

尝试:

Const { code } = state.params;

或者:

const { navigation: { state: { params: { code } } } } = this.props;