пытается изменить экран при нажатии на текст, но неожиданный ток ожидает ";"Ошибка вместо - PullRequest
0 голосов
/ 09 мая 2019

Эй, я тестировал разные способы, чтобы попытаться перейти на другую страницу, нажав на изображение, поэтому я тестировал макет (этот код), чтобы можно было перейти к «AddDocScreen», нажавна текст, но это дает мне ошибку вместо этого.Может ли кто-нибудь помочь, пожалуйста,

вот ошибка:

Failed to load bundle(http://localhost:8081/index.bundle?platform=ios&dev=true&minify=false) with error:(SyntaxError: /Users/camillebasbous/Project/App.js: Unexpected token, expected ";" (30:27)

[0m [90m 28 | [39m[0m
[0m [90m 29 | [39m        [0m
[0m[31m[1m>[22m[39m[90m 30 | [39m       navigateToScreen () [33m=>[39m () [33m=>[39m {[0m
[0m [90m    | [39m                           [31m[1m^[22m[39m[0m
[0m [90m 31 | [39m [0m
[0m [90m 32 | [39m        [36mconst[39m navigationAction [33m=[39m [33mNavigationActions[39m[33m.[39mnavigate({[0m
[0m [90m 33 | [39m           routeName[33m:[39m [32m'AddDocSreen'[39m[33m,[39m[0m (null))

__38-[RCTCxxBridge loadSource:onProgress:]_block_invoke.228
    RCTCxxBridge.mm:414
___ZL36attemptAsynchronousLoadOfBundleAtURLP5NSURLU13block_pointerFvP18RCTLoadingProgressEU13block_pointerFvP7NSErrorP9RCTSourceE_block_invoke.118
__80-[RCTMultipartDataTask URLSession:streamTask:didBecomeInputStream:outputStream:]_block_invoke
-[RCTMultipartStreamReader emitChunk:headers:callback:done:]
-[RCTMultipartStreamReader readAllPartsWithCompletionCallback:progressCallback:]
-[RCTMultipartDataTask URLSession:streamTask:didBecomeInputStream:outputStream:]
__88-[NSURLSession delegate_streamTask:didBecomeInputStream:outputStream:completionHandler:]_block_invoke
__NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__
-[NSBlockOperation main]
-[__NSOperationInternal _start:]
__NSOQSchedule_f
_dispatch_call_block_and_release
_dispatch_client_callout
_dispatch_continuation_pop
_dispatch_async_redirect_invoke
_dispatch_root_queue_drain
_dispatch_worker_thread2
_pthread_wqthread
start_wqthread

Вот код макета:

import React from 'react';
import {AppRegistry, StyleSheet, View, Image, TouchableOpacity, Text} from "react-native" ;
import { createAppContainer, createStackNavigator, StackActions, NavigationActions, navigateToScreen } from 'react-navigation'; // Version can be specified in package.json
import AddDocScreen from './Menu/AddDocScreen'





export default class Mock extends React.Component{
    render(){


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

           <TouchableOpacity
    onPress={ this.navigateToScreen('AddDocScreen') }>
        <View><Text>Click Me</Text></View>
</TouchableOpacity>


            </View>
        )
    }
}


       navigateToScreen () => () => {

        const navigationAction = NavigationActions.navigate({
           routeName: 'AddDocSreen',


})
        this.props.navigation.dispatch(navigationAction)
    }





const doc = createStackNavigator({
  AddDocScreen: {screen: AddDocScreen},
});

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: 'rgba(215,215,215,1)',
        alignItems: 'center',
        justifyContent: 'center',
    },

1 Ответ

0 голосов
/ 10 мая 2019

Похоже, вы пропустили точку с запятой:

import AddDocScreen from './Menu/AddDocScreen'

Кроме того, обязательно добавьте точку с запятой в свои операторы return. Для дальнейшего использования сама ошибка говорит вам, где проблема с синтаксическими ошибками.

Unexpected token, expected ";" (30:27)

Это означает, что вы пропустили точку с запятой в строке 30, символ 27. Не имея возможности посмотреть номера ваших строк, я не могу точно сказать, что это (единственное) место, но просто посмотрите на окончания строк, чтобы увидеть, где точка с запятой отсутствует.

Edit: Также, просматривая ваш код еще раз, обнаружил еще одну ошибку:

onPress={ this.navigateToScreen('AddDocScreen') }>

Должно быть

onPress={ () => this.navigateToScreen('AddDocScreen') }>

Редактировать редактировать: (Я действительно ненавижу не иметь возможности добавлять комментарии) Вы упомянули navigateToScreen () => () => { как ошибку. В этом есть смысл. Я извиняюсь за то, что пропустил это раньше! В React Native вы хотите, чтобы сигнатура метода выглядела как

navigateToScreen() {
 ... code ...
}

То, как вы сейчас это делаете, - это почти ES6 (это было бы function = () => {};), но не React Native. Вы можете увидеть пример на этой странице учебника . Обратите внимание, как выглядит метод

  _onPressButton() {
    Alert.alert('You tapped the button!')
  }
...