#reactjs #typescript #asp.net-core
#reactjs #typescript #asp.net-core
Вопрос:
Я пытаюсь извлечь некоторые записи из базы данных (через ControllerApi
) и отобразить их через React
. Ниже приведен код в *.tsx
файле:
import React, { useState } from 'react';
import ReactDOM from 'react-dom';
class CourseData {
courseId: number = 0;
title: string = "";
}
const FetchCourses = () => {
const [courses, setCourses] = useState(0);
fetch('api/Course/Index')
.then(response => response.json() as Promise<CourseData[]>)
.then(data => {
this.setState({ empList: data, loading: false });
});
let contents = this.state.loading ? <p><em>Loading...</em></p> : this.renderCourseTable(this.state.empList);
return <div>
<h1>Courses</h1>
{contents}
</div>;
}
Этот код генерирует следующую ошибку:
Я принял этот код из этого примера.
Я не вижу никакой синтаксической ошибки, есть идеи?
Ниже я также делюсь webpack.config.js
файлом
const path = require('path');
module.exports = {
mode: 'development',
entry: { 'main': './wwwroot/components/Main.tsx' },
output: {
path: path.resolve(__dirname, 'wwwroot/dist'),
filename: 'bundle.js',
publicPath: 'dist/'
},
module: {
rules: [
{
test: /.js$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-react', '@babel/preset-env']
}
}
},
{
test: /.css$/,
use: [
{ loader: "style-loader" },
{ loader: "css-loader" }
]
}
]
}
};
Комментарии:
1. вы используете webpack?
2. @jgoday да, я включу это в OP
3. кажется странным видеть Main.tsx в wwwroot, а не в ClientApp…
Ответ №1:
Кажется, вам не хватает загрузчика webpack для обработки файлов tsx
module: {
rules: [
{ test: /.tsx?$/, include: /wwwroot/components/, use: 'awesome-typescript-loader?silent=true' },
{ test: /.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : ExtractTextPlugin.extract({ use: 'css-loader?minimize' }) },
{ test: /.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' }
]
},