Недопустимый тип элемента в компоненте, созданном ConnectFunction - PullRequest
0 голосов
/ 03 августа 2020

Я новичок в React Native, и я столкнулся со следующей ошибкой при использовании функции Connect для redux. Ошибка:

Ошибка: недопустимый тип элемента: ожидается строка (для встроенных компонентов) или класс / функция (для составных компонентов), но получено: undefined. Вероятно, вы забыли экспортировать компонент из файла, в котором он определен, или вы могли перепутать импорт по умолчанию и именованный импорт. Проверьте метод рендеринга "ExploreScreen". Ошибка находится по адресу: In ExploreScreen (созданный функцией Connect) в ConnectFunction (...)

Вот соответствующий код в классе ExploreScreen:

import {connect} from 'react-redux'
import _getBusinessLocationMarkersAsync from '../BusinessLocations/_getBusinessLocationMarkersAsync';
import { setLocation, setFilters, setBusiness } from '../Reducer/BusinessLocationsReducer';

export class ExploreScreen extends Component {

  async componentDidMount (){
    businessx = await _getBusinessLocationMarkersAsync();
    this.props.setBusiness(businessx)
  }

  render(){
    const { filters, business } = this.props;
    const mapSpots = filters.type === 'all' ? business
      : business.filter(business => business.type === filters.type);
     
    return(
      <>
        <MapView/>
        <View>
            <Ionicons name='ios-funnel' size={24} color='red'/>
        </View>
    </>
    
    )};
}}

//redux connect
const moduleState = state => ({
  business: state.business.spots,
  filters: state.business.filters,
  location: state.business.location,
});
const moduleActions = {
  setLocation,
  setBusiness,
  setFilters,
}
export default connect (moduleState, moduleActions)(ExploreScreen);

У меня не было этой ошибки до того, как я добавил в рендер представление с иконкой ionicon. иногда я также получаю сообщение об утечке памяти, но не всегда ... Я изо всех сил старался изложить это хорошо, но я новичок в React Native, поэтому дайте мне знать, если чего-то не хватает.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 августа 2020

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

От:

export class ExploreScreen extends Component {

Кому:

class ExploreScreen extends Component {
...