Ram*_*gov 1 javascript jquery jquery-ui-plugins reactjs webpack
我想在React应用程序中使用https://github.com/t1m0n/air-datepicker,但它不起作用.
import React from 'react';
import AirDatepicker from 'air-datepicker';
class Datepicker extends React.Component {
render() {
return(
<AirDatepicker />
)
}
}
export default Datepicker;
`Run Code Online (Sandbox Code Playgroud)
<script src="./../bower_components/jquery/dist/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
这会产生:
error($ is not defined)
Run Code Online (Sandbox Code Playgroud)
另一种方法:
import React from 'react';
import $ from 'jquery';
import AirDatepicker from 'air-datepicker';
class Datepicker extends React.Component {
render() {
return(
<AirDatepicker />
)
}
}
export default Datepicker;Run Code Online (Sandbox Code Playgroud)
同样的错误.
如何将JQuery插件与React集成?
t1m*_*m0n 14
首先air-datepicker 不是React组件,它是jQuery插件,所以它不会像你的例子那样工作.
其次,为了正确的工作,jQuery应该在全局环境中可用,最实际的方法是将它包含在页面中通过<script>标记.它应该包含在插件脚本之前.
要检查它是否真的包含在全球范围内,只需输入Chrome控制台window.jQuery并按Enter即可返回类似内容function (a,b){...}.如果没有,当你做错事时,检查标签的src属性<script>,也许它指向错误的目的地
如何让它在React中运行?
嗯,最简单的方法就是在组件中的任何DOM元素上初始化插件,就像在常规JavaScript中一样.
class MyComponent extends React.Component {
componentDidMount(){
this.initDatepicker();
}
initDatepicker(){
$(this.refs.datepicker).datepicker();
}
render(){
return (
<div>
<h3>Choose date!</h3>
<input type='text' ref='datepicker' />
</div>
)
}
}
ReactDOM.render(
<MyComponent />,
document.getElementById('app')
);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/datepicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/css/datepicker.min.css" rel="stylesheet"/>
<div id="app"></div>Run Code Online (Sandbox Code Playgroud)
作为单独的组件
非常简单的datepicker React组件示例
class Datepicker extends React.Component {
componentDidMount(){
this.initDatepicker();
}
initDatepicker(){
$(this.refs.datepicker).datepicker(this.props);
}
render(){
return (
<input type='text' ref='datepicker'/>
)
}
}
class MyComponent extends React.Component {
render(){
return (
<div>
<h3>Choose date from React Datepicker!</h3>
<Datepicker range={true} />
</div>
)
}
}
ReactDOM.render(
<MyComponent />,
document.getElementById('app')
);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/js/datepicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/air-datepicker/2.2.3/css/datepicker.min.css" rel="stylesheet"/>
<div id="app"></div>Run Code Online (Sandbox Code Playgroud)
另外不要忘记包含css文件.