useRoute 抛出奇怪的错误:undefined is not an object

时间:2021-03-28 17:09:08

标签: react-native parameters routes react-navigation-v5

我想这有什么奇怪的地方在于我可以临时修复它。我正在使用 react-native、expo 和 react-navigation 5。

我基本上构建了一个自定义菜单,以便在选择项目时,会发生一些东西。我将一个字符串 selectedId 传递到另一个屏幕以将状态从一个屏幕设置为下一个。

此功能过去运行良好,但在此过程中的某个地方(糟糕),当我重新启动应用程序时,导航到该屏幕时开始收到错误消息。

undefined is not an object (evaluating 'route.params.selectedId;)

要修复此错误,我只需将 {selectedId} = route.params 写为 selectedId = route.params 并保存。现在菜单可以工作了,但是 renderElement() 没有加载。现在这是奇怪的部分,当我将它改回 {selectedId} = route.params 时,renderElement() 现在加载并且一切都按预期工作。什么可能导致这种行为?

我的代码:

const ShopScreen = () => {

const route = useRoute();
const {selectedId} = route.params;

console.log(selectedId);

function renderElement () {

    if(selectedId === '1'){
        return (<View>
          <Text style={{ color: 'white'}}>
            Test Page 
          </Text>
        </View>);
    }

return (
<View style={styles.container}>
    <View>
      <NavMenu />
    </View>

  <View style={{ alignSelf: 'center', height: '84%'}}>
    {renderElement()}
  </View>
</View>

)}

从另一个屏幕:

const [selectedId, setSelectedId] = useState('1');

const navigation = useNavigation();  
  
useEffect(() => {
          navigation.navigate('Shop', {selectedId: selectedId});
        }, [selectedId]);

//return

0 个答案:

没有答案