我是 React Native 的新手,我刚开始学习 ReactNavigation。
我正在使用的应用程序旨在在您玩棋盘游戏时跟踪玩家和积分。这是代码App.js:
import * as React from 'react';
import {Component} from 'react';
import { StyleSheet, Text, View, Button, Alert } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { create StackNavigator } from '@react-navigation/stack';
import { Player } from './player';
const Stack = createStackNavigator();
export default class BoardGameApp extends Component{
constructor(props){
super(props);
this.state={ playerTable:[] }
}
render(){
let numOfPlayers = 4
const totNumOfTerritories = 48
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
function HomeScreen(){
return(
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Button title="Add a new Player" onPress={
() => this.setState({ playerTable: [
...this.state.playerTable,
{ playerName: "whatever"},
]
})}>
</Button>
/* this is commented
{this.state.playerTable.map(
function(player) {
return <Player territories={totNumOfTerritories / numOfPlayers} />;
}
)} here the comment ends */
</View>
);
}
所以基本上应该发生的是,每当我按下按钮时,{playerName: "whatever"}应该将PlayerTable[]一个由{playerName: "whatever"}存在于数组中的对象。当所有这些都发生在 App 组件内部而不使用屏幕时,一切都很好,但当然看起来很糟糕。但是,一旦我开始使用屏幕,当我按下手机上的按钮时,它就会给我一个错误undefined is not an object (evaluating '_this2.setState'),因为我猜它无法识别“this”是什么。
我正在通过 2018 年 Cs50 课程学习 ReactNative,其中“ScreenProps”仍然可用。我做了一些研究,我认为我的答案应该在某个地方Initial Params,React Context或者Redux即使我仍然不知道这些概念,但是每当我尝试在文档或 Youtube 上查找时,它只会给我提供比只是将状态从对象传递到屏幕。所以这就是为什么我最终决定在这里问这个问题。
