Почему этот скрипт не работает в HTML-файл с реагировать JS? Неожиданный идентификатор - PullRequest
0 голосов
/ 10 июня 2019

Я добавляю два компонента JS в моем HTML, но один не работает в консоли chrome я вижу ошибку в js файле в 1 строке Импортировать React из 'реакции' Uncaught SyntaxError: Неожиданный идентификатор

первый файл js работает правильно, эта форма импорта React 'реагирует', которую я использовал на нашей странице, и это работало правильно почему?

Мой файл js:

import React from 'react'

const Header = (props) => (
    <h1>{props.title}</h1>
)
const e = React.createElement;

class BookEditPage extends React.Component {

    constructor(props) {
        super(props);
        this.state = {comments: [],books: []};
    }

    componentDidMount() {
        Promise
            .all(
                [fetch('/api/comments').then(response => response.json())
                    ,fetch('/api/books').then(response => response.json())])
            .then(([comments,books]) => this.setState({comments,books}));
    }

    render() {
        return e(
            <React.Fragment>
                <Header title={'Books'}/>
                <table>
                    <thead>
                    <tr>
                        <th>ID</th>
                        <th>Book</th>
                        <th>Author </th>
                        <th>Genre</th>
                    </tr>
                    </thead>
                    <tbody>
                    {
                        this.state.books.map((book, i) => (
                            <tr key={book.id} >
                                <td>{book.id}</td>
                                <td>{book.bookName}</td>
                                <td>{book.author.authorName +' ' + book.author.authorSurname}</td>
                                <td>{book.genre.genreName}</td>
                            </tr>
                        ))
                    }
                    </tbody>
                </table>

                <Header title={'Comments'}/>
                <table>
                    <thead>
                    <tr>
                        <th>ID</th>
                        <th>Book name</th>
                        <th>Comment body</th>
                    </tr>
                    </thead>
                    <tbody>
                    {
                        this.state.comments.map((comment, i) => (
                            <tr key={i}>
                                <td>{comment.id}</td>
                                <td>{comment.book.bookName}</td>
                                <td>{comment.commentBody}</td>
                            </tr>
                        ))
                    }
                    </tbody>
                </table>
            </React.Fragment>
        )
    }
}

const domContainer = document.querySelector('#book-edit-table');
ReactDOM.render(e(BookEditPage), domContainer);

мой HTML-файл:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>Edit book</title>
    <style type="text/css">
        body {
            padding: 50px;
        }

        label {
            display: inline-block;
            width: 100px;
        }

        input:read-only {
            background: lightgray;
        }

        .row {
            margin-top: 10px;
        }
    </style>
</head>
<body>

<div id="like-button"></div>
<div id="book-edit-table"></div>

<script src="https://unpkg.com/react@16/umd/react.development.js" crossorigin></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js" crossorigin></script>
<script src="/LikeButton.js"></script>
<script src="/BookEditPage.js"></script>

</body>
</html>

1 Ответ

0 голосов
/ 10 июня 2019
  1. Вы должны использовать babel JSX, чтобы написать jsx.
  2. Удалить первую строку import React from 'react'

Посмотрите, как строится эта скрипка .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...