У меня возникла следующая проблема. Я добавил свой код и снимок экрана. Может ли кто-нибудь помочь мне решить эту проблему:
Инвариантное нарушение: недопустимый тип элемента: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: 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_).
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