javascript - 将 jquery ui datepicker 集成到 React JS 中

标签 javascript reactjs

我正在尝试使用 React js 将 jquery ui datepicker 集成到输入文本上,我有这个 jsbin,http://jsbin.com/diyifa/edit?html,js .

我有一个名为 Datepicker.js 的组件

import React from 'react';
import ReactDOM from 'react-dom';
import {UserProfileForm} from 'react-stormpath';

export default class DateInput extends React.Component {
    render() {
        return (
            <input type="text" className="datepicker"/>
        )
    }
}
export default class Calendar extends React.Component {
    componentDidMount: function () {
        $('.datepicker').datepicker();
        render()
        {
            return (
                <DateInput/>
            )
        }
    }
}
ReactDOM.render(
    <Calendar/>, document.getElementById('dpick')
);

我想在我的页面中调用这个名为 PatPage.js 的组件

import React from 'react';
import DocumentTitle from 'react-document-title';
import {UserProfileForm} from 'react-stormpath';
import {Calendar} from './Datepicker.js';

<div className="form-group">
    <label id="id_label_dateofbirth" htmlfor="id_field_dateofbirth" className="col-md-6 control-label2">
        <span className="e2bcode" id="E2BCodes">D.2.1</span>Date of Birth
    </label>
    <div className="col-md-3 divhidetxtdpatient" id="showhidemasked">
        <div id="dpick"></div>
    </div>
</div>

(还有更多代码,但我只展示了我实现它时的部分) 任何让它工作的提示都将不胜感激,我是 React JS 的新手,谢谢

最佳答案

假设您的构建系统是 webpack,您应该使用 provide 插件来确保加载 $ 和 jQuery...

new webpack.ProvidePlugin({
  Promise: 'bluebird',
  jQuery: 'jquery',
  $: 'jquery',
  React: 'react'
})

此外,将 jquery-ui 添加到主 entry.js 之前的条目列表中

以下是您大致需要的 ES6 类

//DatePicker.js
export default class DatePicker extends React.Component {
  componentDidMount() {
    $(this.refs.input).datepicker();
  }

  componentWillUnmount() {
    $(this.refs.input).datepicker('destroy');
  }

  render() {
    const props = this.props;
    return <input ref="input" type="date" {...props} />
  }
}

//entry.js
import ReactDOM from 'react-dom';
import DatePicker from './DatePicker';

ReactDOM.render(
  <DatePicker 
    value="2015-01-01" 
    onChange={(evt)=>console.log('new date', evt.target.value)} 
  />, 
  document.getElementById('dpick')
)

关于javascript - 将 jquery ui datepicker 集成到 React JS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36049517/

相关文章:

javascript - ui.bootstrap.timepicker 未与 angularjs ng-model 绑定(bind)

javascript - 从外部 api 获取时如何在 Reactjs 中找到平均值?

javascript - React JS 应用程序在本地主机上运行速度非常慢,但在 Azure 服务器上运行正常

javascript - 如果存在其他类则隐藏元素

javascript - 在单选按钮选择更改 AngularJS 上做一些事情

reactjs - Prettier 无法从 Visual Studio Code 中进行保存

javascript - 如何将数组传递给material-ui dataSource props

reactjs - 生产 webpack main.bundle.js 包含文件的完整路径

javascript - 如何停止 Scriptaculous 中的闪烁?

javascript - Chrome Apps <a> 标签不工作