我在我的React应用程序中使用物化CSS库。 因此,我想从中使用“模式”。有两种初始化方式:
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.modal');
var instances = M.Modal.init(elems, options);
});
// Or with jQuery
$(document).ready(function(){
$('.modal').modal();
});
所以,我通常采用第二种方式:
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
})
});
}
})
}
那为什么模态现在不起作用? 怎么正确做呢?
答案 0 :(得分:1)
您只想在React App的树形结构的叶子节点中使用jQuery。如果此组件具有任何子组件,那么这是个坏主意。如果它是叶节点组件,则需要将jQuery逻辑放在componentDidMount()函数中。
此页面上有一些有关此主题的有用材料:https://reactjs.org/docs/integrating-with-other-libraries.html