Нет ли способа запустить скрипт AJAX внутри компонента React? - PullRequest
1 голос
/ 17 марта 2019

Единственный способ найти (онлайн) импорт ajax - через тег HTML-скрипта <script ... </script>, но мое веб-приложение построено без HTML-файла.Это странная ситуация, потому что я ее создал (с такими важными вещами, как ссылка на favicon и имя веб-сайта), но, тем не менее, мое приложение настроено, его не волнует index.html.

Этопостроено с использованием Koa, Next, React и Material-UI.Я ни в коем случае не профессионал, но я смоделировал это приложение после того, как предыдущее приложение, созданное с помощью Koa, Next и React, имело работающий index.html, но приложение работает без него, и я до сих пор не могу понять, как это сделать.меня, когда / где мой код должен просить об этом.В лучшем случае мне не нужен index.html, чтобы заставить работать AJAX, но , если кто-то знает, чего мне не хватает, когда дело доходит до работы index.html, я весь слух .

Вот так выглядит мой репозиторий на данный момент:

[-components
[---Component1
[---Component2
[---Component3
[---Component...
[-node_modules
[-pages
[---index.js
[-public
[---favicon.png
[---index.html
[-app.js
[-package.json

Код, о котором идет речь: @ index.js

class Index extends React.Component {
    state = {
        loading: false,
    };

    componentDidMount() {
        var jqXHR = $.ajax({
            type: "POST",
            url: "/login",
            async: false,
            data: { mydata: [Cookies.get('links'), Cookies.get('numSentences')] }
        });
        Cookies.set('final', jqXHR.responseText);
    }

    handleClickLoading = () => {
        this.setState(state => ({
            loading: true,
        }));
        this.componentDidMount();
    };

    render() {
        const {loading} = this.state;
        return (
            <div>
                <AppBar/>
                <Block/>
                <Card>
                    <CardActions>
                    <Button size="large"
                            fullWidth={true}
                            onClick={this.handleClickLoading}>Submit</Button>
                    </CardActions>
                </Card>
                <Fade
                    in={loading}
                    unmountOnExit
                    >
                <BottomBar/>
                </Fade>
            </div>

        )
    }
}

export default Index;

Этот код будет немедленносбой при загрузке страницы с ReferenceError: $ не определено .Это после того, как я немного устранил неполадки и изначально имел AJAX-код в функции handleClickLoading (), например, такой, которая не будет аварийно завершаться, пока не сработает событие onClick кнопки:

...
class Index extends React.Component {
    state = {
        loading: false,
    };

    handleClickLoading = () => {
        this.setState(state => ({
            loading: true,
        }));
        var jqXHR = $.ajax({
            type: "POST",
            url: "/login",
            async: false,
            data: { mydata: [Cookies.get('links'), Cookies.get('numSentences')] }
        });
        Cookies.set('final', jqXHR.responseText);
    };

    render() {
...

Для справки, я могувведите "$ .ajax", и Pycharm выполнит автозаполнение и сообщит мне ожидаемые параметры, но он всегда заканчивается подчеркиванием и помечается как "пропущенный оператор импорта".Как мне его импортировать?

1 Ответ

0 голосов
/ 17 марта 2019

Вместо ajax есть модуль axios npm, который делает то же самое и хорошо работает с реагирующими попытками. Это просто, тогда ajax

здесь ссылка для модуля npm

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