Где разместить JQuery в React Component? - PullRequest
0 голосов
/ 04 апреля 2019

Я использую библиотеку материализации css в своем приложении React.Итак, я хочу использовать «модал» из него.Есть 2 способа его инициализации:

document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.modal');
var instances = M.Modal.init(elems, options);
 });

// Or with jQuery

$(document).ready(function(){
$('.modal').modal();
});

Итак, я обычно делаю 2-й способ примерно так:

componentDidMount() {
    const $ = window.$;
    $('.dropdown-trigger').dropdown();
    $(document).ready(function () {
        $('.modal').modal();
    })
}

И у меня все заработало, но теперь у меня есть дополнительныйметод в моем ComponentDidMount (), который запрашивает API сервера:

componentDidMount() {
    this.getCurrentUser();
    const $ = window.$;
    $('.dropdown-trigger').dropdown();
    $(document).ready(function () {
        $('.modal').modal();
    })
}

getCurrentUser() {
    fetch('api/user/'+ localStorage.getItem("currentUser") +'/me', {
        method: 'GET',
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        }
    })
        .then(response => {
            if (!response.ok) {
                this.setState({
                    isLoadong: false,
                    failed: true
                })
            }
            else {
                response.json().then(user => {
                    this.setState({
                        user: user,
                        isLoadong: false,
                        failed: false
                    })
                });
            }
        })
}

Так почему же модальное сейчас не работает?Как все сделать правильно?

1 Ответ

1 голос
/ 04 апреля 2019

Вы хотите использовать jQuery только в конечных узлах древовидной структуры вашего приложения React.Если у этого компонента есть дочерние компоненты, это плохая идея.Если это компонент конечного узла, то вы захотите поместить свою логику jQuery в функцию componentDidMount ().

На этой странице есть несколько полезных материалов по теме: https://reactjs.org/docs/integrating-with-other-libraries.html

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