Условный рендеринг в приложении React с использованием tsx

Я пытаюсь отобразить представление для пользователя на основе состояния, в котором он находится в приложении React, с использованием шаблона React по умолчанию, который предоставляет Microsoft.

Вот ошибка, которую я получаю:

картина ошибки

Вот мой код:

import * as React from 'react';
import { RouteComponentProps } from 'react-router';
import { NextButton } from './shared/NextButton'
import { StationZero } from './stations/StationZero';

interface BiodieselStudioState {
    station: string[];
    stationNumber: number;
}

export class BiodieselStudio extends 
React.Component<RouteComponentProps<{}>, BiodieselStudioState> {
    constructor() {
        super();

        this.state = {
            station: ["StationZero", "StationOne", "StationTwo",
                    "StationThree", "StationFour", "StationFive",
                    "StationSix", "StationSeven"],
            stationNumber: 0
        };
}

public render() {
    return (
        <div>
            <h1>BIODIESEL STUDIO!</h1>
            { this.chooseStation(this.state.stationNumber) }
            <NextButton />
        </div>
    );
}

chooseStation(stationNumber: number) {
    switch(stationNumber) {
        case 0: {
            return <StationZero />
            break;
        }
        case 1: {

            break;
        }
        case 2: {

            break;
        }
        case 3: {

            break;
        }
        case 4: {

            break;
        }
        case 5: {

            break;
        }
        case 6: {

            break;
        }
        case 7: {

            break;
        }
        case 8: {

            break;
        }
        default: {

        }
    }
}

Мне нужно загружать очень разные пользовательские интерфейсы, но это в основном хост для представлений станции, и идея состоит в том, что дочерние компоненты заставят пользователя завершить действие и обновить состояние в BiodieselStudio, что сделает его так, чтобы приложение работало. по мере необходимости.

Многие операторы case не заполнены, но они будут следовать той же схеме!

Заранее огромное спасибо вам, ребята!

Что такое строка 36 файла BiodieselStudio.tsx?

FuzzyTree 23.04.2018 00:41

Это строка, которая возвращает <StationZero />, и ее можно найти под случаем 0 моей функции selectStation @FuzzyTree.

MaholeycowDev 23.04.2018 01:08
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
1 646
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно ошибке, ваш компонент StationZero имеет RouteComponentProps<{}>, определенный для его реквизита

т.е.

class StationZero extends React.Component<RouteComponentProps<{}>> {

Но вы не передаете ему RouteComponentProps, поскольку вы не монтируете компонент через react-router.

Вы можете исправить эту ошибку, удалив RouteComponentProps<{}> из определения компонента StationZero:

class StationZero extends React.Component {

Также удалите этот break, чтобы исправить ошибку «недоступный код».

case 0: {
    return <StationZero />
    break; // not reachable because of return
}

Это было решение моей проблемы. Спасибо!

MaholeycowDev 23.04.2018 04:06

Другие вопросы по теме