представление вкладки ReactNative проблема


У меня возникла следующая проблема. Я добавил свой код и снимок экрана. Может ли кто-нибудь помочь мне решить эту проблему:

Инвариантное нарушение: недопустимый тип элемента: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: undefined. Скорее всего, вы забыли экспортировать свой компонент из файла, в котором он определен, или вы могли перепутать импорт по умолчанию и именованный импорт.

Проверьте метод рендеринга SceneView.

введите здесь описание изображения
Код:

Я добавил снимок и код. Пожалуйста, помогите мне решить эту проблему.

Проблема в том, что контекст Компонента недоступен в SceneView. Поскольку вы вызываете

import React, {Component} from 'react';
import {View, StyleSheet, SafeAreaView, Text, Button} from 'react-native';
import {
  TabViewAnimated,
  TabView,
  TabViewPage,
  TabBarTop,
} from 'react-native-tab-view';

export default class Test extends Component {
  constructor(props) {
    super(props);
    this.state = {
      index: 0,
      routes: [
        {key: '1', title: 'First'},
        {key: '2', title: 'Second'},
      ],
    };
  }

  _renderScene = ({route}) => {
    switch (route.key) {
      case '1':
        return <View style={{flex: 1, backgroundColor: '#ff4081'}} />;
      case '2':
        return <View style={{flex: 1, backgroundColor: '#673ab7'}} />;
      default:
        return null;
    }
  };

  _renderPage = props => (
    <TabViewPage {...props} renderScene={this._renderScene} />
  );

  render() {
    return (
      <View>
        <TabView
          navigationState={this.state}
          renderScene={this._renderPage}
          renderHeader={this._renderHeader}
          onIndexChange={index => this.setState({index})}
          style={styles.container}
        />
      </View>
    );
  }
}
в renderPage, ему необходимо знать контекст / this, чтобы найти конкретную функцию. Всякий раз, когда вы передаете функцию из компонента вашего класса другому компоненту, вам также необходимо указать, что он должен наследовать контекст компонента.

import React, {Component} from 'react';
import {View, StyleSheet, SafeAreaView, Text, Button} from 'react-native';
import {
  TabViewAnimated,
  TabView,
  TabViewPage,
  TabBarTop,
} from 'react-native-tab-view';

export default class Test extends Component {
  constructor(props) {
    super(props);
    this.state = {
      index: 0,
      routes: [
        {key: '1', title: 'First'},
        {key: '2', title: 'Second'},
      ],
    };
  }

  _renderScene = ({route}) => {
    switch (route.key) {
      case '1':
        return <View style={{flex: 1, backgroundColor: '#ff4081'}} />;
      case '2':
        return <View style={{flex: 1, backgroundColor: '#673ab7'}} />;
      default:
        return null;
    }
  };

  _renderPage = props => (
    <TabViewPage {...props} renderScene={this._renderScene} />
  );

  render() {
    return (
      <View>
        <TabView
          navigationState={this.state}
          renderScene={this._renderPage}
          renderHeader={this._renderHeader}
          onIndexChange={index => this.setState({index})}
          style={styles.container}
        />
      </View>
    );
  }
}

Вы можете сделать это с помощью привязок (от _3_ к _4_) или указать анонимную функцию (_5_).


person Kumail    schedule 06.02.2020    source источник
comment

index.bundle? platform = ios & dev = true & minify = false: 27606: 43 createFiberFromTypeAndProps
index.bundle? platform = ios & dev = true & minify = false: 27608: 19 createFiberFromElement
index.bundle? platform = ios & dev = true & minify = false: 27628: 48 reconcileSingleElement
index.bundle? platform = ios & dev = true & minify = false: 19154: 51 reconcileChildFibers
index.bundle? platform = ios & dev = true & minify = false: 19201: 63concileChildren
index.bundle? platform = ios & dev = true & minify = false: 21139: 50 updateHostComponent
index.bundle? platform = ios & dev = true & minify = false: 21533: 26 invokeGuardedCallbackImpl
index.bundle? platform = ios & dev = true & minify = false: 12669: 21 invokeGuardedCallback
index.bundle? platform = ios & dev = true & minify = false: 12765: 42 beginWork $$ 1
index.bundle? platform = ios & dev = true & minify = false: 26886: 34 performUnitOfWork
index.bundle? Platform = ios & dev = true & minify = false: 26024: 30 workLoopSync
index.bundle? platform = ios & dev = true & minify = false: 26006: 45 renderRoot
index.bundle? platform = ios & dev = true & minify = false: 25770: 29 renderRoot
[собственный код]: 0 runRootCallback
index.bundle? platform = ios & dev = true & minify = false: 25531: 34 runRootCallback
[собственный код]: 0
index.bundle? platform = ios & dev = true & minify = false: 16261: 38 unstable_runWithPriority
index.bundle? platform = ios & dev = true & minify = false: 42653: 30 flushSyncCallbackQueueImpl
index.bundle? platform = ios & dev = true & minify = false: 16256: 28 flushSyncCallbackQueue
index.bund = ios & dev = true & minify = false: 16245: 35 scheduleUpdateOnFiber
index.bundle? platform = ios & dev = true & minify = false: 25413: 37 scheduleRootUpdate
index.bundle? platform = ios & dev = true & minify = false: 27838: 21 scheduleRoot
index.bundle? platform = ios & dev = true & minify = false: 16809: 42
index.bundle? platform = ios & dev = tru e & minify = false: 41056: 35 forEach
[собственный код]: 0 performReactRefresh
index.bundle? platform = ios & dev = true & minify = false: 41048: 30 performReactRefresh
index.bundle? platform = ios & dev = true & minify = false: 40854: 48
index.bundle? platform = ios & dev = true & minify = false: 480: 40 _callTimer
index.bundle? platform = ios & dev = true & minify = false: 30628: 17 callTimers
index.bundle?platform=ios&dev=true&minify=false:30835:19 __callFunction
index.bundle? platform = ios & dev = true & minify = false: 2681: 49
index.bundle? platform = ios & dev = true & minify = false: 2394: 31 __guard
index.bundle? platform = ios & dev = true & minify = false: 2635: 15 callFunctionReturnFlastedQueue
index.bundle? platform = ios & dev = true & minify = false: 2393: 21 callFunctionReturnFlastedQueue
[собственный код]: 0   -  person AMC    schedule 06.02.2020


Ответы (1)


Вы, вероятно, забыли экспортировать свой компонент из файла, в котором он определен, или могли перепутать импорт по умолчанию и именованный импорт. Вы проверяли, является ли один из этих вопросов?

Эта ошибка находится в:
в RCTView (в SceneView.tsx: 92)
в SceneView (в TabView.tsx: 181)
в RCTView (в createAnimatedComponent.js: 233)
в AnimatedComponent (Component) (в Pager.tsx: 780)
в PanGestureHandler (в Pager.tsx: 769)
в Pager (в TabView.tsx: 75)
в RCTView ( в TabView.tsx: 133)
в TabView (в Test.js: 47)
в RCTView (в Test.js: 46)
в Test (в SceneView.js: 9) < br /> в SceneView (в StackView.tsx: 269)
в RCTView (в CardContainer.tsx: 171)
в RCTView (в CardContainer.tsx: 170)
в RCTView (в Card .tsx: 488)
в RCTView (в createAnimatedComponent.js: 151)
в AnimatedComponent (в Card.tsx: 475)
в PanGestureHandler (в Card.tsx: 468)
в RCTView (в createAnimatedComponent.js: 151)
в AnimatedComponent (в Card.tsx: 464)
в RCTView (в Card.tsx: 457)
в Card (в CardContainer.tsx: 138)
в CardContainer (в CardStack.tsx: 544)
в RCTView (в createAnimatedComponent.js: 151)
в AnimatedComponent (в CardStack.tsx: 121)
в MaybeScreen (в CardStack.tsx: 537)
в RCTView (в CardStack.tsx: 96)
в MaybeScreenContainer (в CardStack.tsx: 444)
в CardStack (в StackView.tsx: 377)
в KeyboardManager (в StackView.tsx: 375)
в SafeAreaProviderCompat (в StackView.tsx: 372)
в StackView (в StackView. tsx: 41)
в StackView (в createStackNavigator.tsx: 33)
в Unknown (в createNavigator.js: 80)
в Navigator (в SceneView.js: 9)
в SceneView (в StackView.tsx: 269)
в RCTView (в CardContainer.tsx: 171)
в RCTView (в CardContainer.tsx: 170)
в RCTView (в Card.tsx: 488)
в RCTView (в createAnimatedComponent.js: 151)
в AnimatedCom компонент (в Card.tsx: 475)
в PanGestureHandler (в Card.tsx: 468)
в RCTView (в createAnimatedComponent.js: 151)
в AnimatedComponent (в Card.tsx: 464 )
в RCTView (в Card.tsx: 457)
в Card (в CardContainer.tsx: 138)
в CardContainer (в CardStack.tsx: 544)
в RCTView ( в createAnimatedComponent.js: 151)
в AnimatedComponent (в CardStack.tsx: 121)
в MaybeScreen (в CardStack.tsx: 537)
в RCTView (в CardStack.tsx: 96) < br /> в MaybeScreenContainer (в CardStack.tsx: 444)
в CardStack (в StackView.tsx: 377)
в KeyboardManager (в StackView.tsx: 375)
в RNCSafeAreaView (в src /index.tsx:26)
в SafeAreaProvider (в SafeAreaProviderCompat.tsx: 34)
в SafeAreaProviderCompat (в StackView.tsx: 372)
в StackView (в StackView.tsx: 41) < br /> в StackView (в createStackNavigator.tsx: 33)
в Un известно (в createNavigator.js: 80)
в Navigator (в createAppContainer.js: 430)
в NavigationContainer (в App.js: 20)
в приложении (в renderApplication.js: 40 )
в RCTView (в AppContainer.js: 101)
в RCTView (в AppContainer.js: 119)
в AppContainer (в renderApplication.js: 39)

person leMale    schedule 06.02.2020