将JQuery代码应用于组件内的元素
我有一个应用程序,我正在使用React。 我现在有一个问题,我正在尝试实现bootstrap-wysiwyg / bootstrap3-wysiwyg包。
为了使我的能够作为
ootstrap-wysiwyg/bootstrap3-wysiwyg
文本编辑器工作,我需要在文本编辑器上运行以下JQuery函数:
$(".textarea").wysihtml5()
这是我的组件:
import React, { Component } from 'react' export class MyTextEditor extends Component { render() { return ( ) } }
如何将JQuery函数应用于React组件中的 ?
我知道混合使用React和JQuery并不是一个很好的做法,但我真的需要这个才能工作。 如果有一种替代方法可以使程序包运行,我会很高兴作为答案。
否则,如果有人可以帮我这个工作,将不胜感激!
更新:( 还在看)
感谢所有的建议。 我尝试了一堆,但他们都导致了问题:
-
根本不能很好地显示,按钮是巨大的。
-
给了我:
Uncaught Error: addComponentAsRefTo(...): Only a ReactOwner can have refs.
- Syam Mohan的回答给了我:
Uncaught TypeError: Cannot read property 'font-styles' of undefined at f
仍然在寻找有用的东西,感谢你们迄今为止所做的一切努力!
添加和导入JQuery是第一部分 。
1)使用webpack
我看到的最好方法是在webpack.config.js
添加一个插件:
var webpack = require('webpack'); module.exports = { plugins: [ new webpack.ProvidePlugin({ '$': 'jquery', 'jQuery': 'jquery', 'window.jQuery': 'jquery' }) ] };
所有这些不同的拼写错误都是为了使JQuery可用性与各种模块兼容。 当然你需要npm install
jquery
和你的插件( wysihtml5
)。
2)或者您可以在index.html
导入它:
编辑:3)使用meteor我做了meteor add jquery
,并做了伎俩。
然后, 第二部分是在React中使用它。
要在元素上使用jquery插件,首先需要将其渲染,这就是为什么需要将代码放在componentDidMount
(在第一次渲染之后运行)的原因。 我建议你(基于我不同的搜索,当我必须做与你相同的事情,但使用bootstrapTable
)使渲染部分最简单(通过删除)并使用ReactDOM.findDOMNode(this)
作为选择器JQuery的:
import React, { Component } from 'react' import ReactDOM from 'react-dom' export class MyTextEditor extends Component { componentDidMount() { $(ReactDOM.findDOMNode(this)).wysihtml5() } render() { return ( ) } }
编辑:或者使用React的refs
import React, { Component } from 'react' export class MyTextEditor extends Component { componentDidMount() { $(this.refs.textareaIWantToUse).wysihtml5() } render() { return ( ) } }
试试这个:
import React, { Component } from 'react'; import $ from 'jquery'; export class MyTextEditor extends Component { componentDidMount() { $(".textarea").wysihtml5() } render() { return ( ) } }
注意:不要忘记添加JQuery库