我是新來的反應原生和反應導航,我得到了這個錯誤。
未捕獲的型別錯誤:無法讀取未定義的屬性(讀取“導航”)
我不明白我的,因為我只是使用已經作業的相同代碼,但現在它不起作用。
我正在嘗試制作一個回傳箭頭,將您送回 MachineList 螢屏。
//doesn't work
const AddMachineDetails = ({route}, props) => {
...
<TouchableOpacity onPress={() => props.navigation.navigate("MachinesList")}>
<BackArrow />
</TouchableOpacity>
因此,當我按下后退箭頭時,它會向我發送此錯誤:
Uncaught TypeError: Cannot read properties of undefined (reading 'navigate')
這是我的導航檔案:
import MachinesList from '../components/MachinesList'
import AddMachineDetails from '../components/AddMachineDetails';
...
function MachineListStackScreen() {
return(
<Stack.Navigator screenOptions={{headerShown: false}}>
<Stack.Screen name='MachinesList' component={MachinesList}/>
<Stack.Screen name='AddMachineDetails' component={AddMachineDetails}/>
</Stack.Navigator>
)
}
...
我認為問題出在這段代碼的某個地方,但如果不是,我會向您展示更多我的代碼
這是一個我的navigation.navigate作業完美的例子:
//no specific imports (but works)
const MachinesList = (props) => {
...
<TouchableOpacity style={styles.machineBox} onPress={() => props.navigation.navigate('AddMachineDetails', {item})}>
uj5u.com熱心網友回復:
你必須破壞props 引數。
const AddMachineDetails = ({route, ...props}) => { ... }
或者
const AddMachineDetails = ({route, navigation, ...props}) => { ... } // then straightly use the *navigation*
uj5u.com熱心網友回復:
可選的鏈接在未來可以用來防止運行時的錯誤。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining
uj5u.com熱心網友回復:
問題就在這里({route}, props) =>。
您正在解構第一個引數,但沒有傳遞其他引數,這就是未定義“props”變數的原因。
你有兩個解決方案:
- 只需使用道具:
const AddMachineDetails = (props) => {
- 解構道具:
const AddMachineDetails = ({route, navigation, ...props}) => {
...
<TouchableOpacity onPress={() => navigation.navigate("MachinesListDetails")}>
<BackArrow />
</TouchableOpacity>
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422622.html
標籤:
