Как вызвать функцию в react js из внешнего файла JS
Я пытался создать pop over для одного из моих элементов, которые используют react и bootstrap.
Ниже приведен мой код реакции: -
class Share extends React.Component{
render(){
return(
<div>hello</div>
);
}
}
var shareRenderFunc=function() {
ReactDOM.render(
<Share/> , document.getElementById('shareContainer')
);
}
Ниже приведен мой jquery, называемый shareRenderFunc() :-
var popOverSettings = {
placement: 'bottom',
container: 'body',
selector: '[rel="popover"]',
content: function(){
window.shareRenderFunc();
return $('#shareContainer').html();
}
}
$('body').popover(popOverSettings);
Ниже приведен мой HTML, содержащий элемент popover: -
<div className="like-share icons-gray-black">
<a href=""><span><i className="fa fa-heart" aria-hidden="true"></i></span></a>
<a><span><i className="share-social fa fa-share-alt" rel="popover" aria-hidden="true"></i></span></a>
</div>
Но в консоли я получаю TypeError, говорящий, что shareRenderFunc-это не функция
P. S: файл reactjs загружается перед файлом jquery, поэтому вызываемая функция уже там, я попробовал то же самое, создав другой файл javascript и вызывая функцию, присутствующую там, и это, кажется, работает нормально.
2 ответов:
Ваш
shareRenderFuncсуществует только в локальной области вашего классаShare. Вам нужно определить его как глобальный через объектwindow:class Share extends React.Component{ render(){ return( <div>hello</div> ); } } window.shareRenderFunc=function() { ReactDOM.render( <Share/> , document.getElementById('shareContainer') ) );
Пытались ли вы изменить
var shareRenderFunc=function() { ReactDOM.render( <Share/> , document.getElementById('shareContainer') ); }В этом...
function shareRenderFunc(){ ReactDOM.render( <Share/> , document.getElementById('shareContainer') ); }Вам нужно только вызвать функцию wihtout params, если вы ее не установили.
shareRenderFunc();PS: Если вы хотите, чтобы ваш jQuery загружался до reactsjs, попробуйте написать сценарий jQuery поверх строки reactsjs
<script src="jquery ...."></script> /* and here your reactsjs */
Comments