Javascript jquery timepicker不会使用React更新道具更改
我正在尝试在我的React应用程序中使用这个时间选择器。我围绕它编写了一个简单的类,并将当前时间传递给它,无论它在组件外部发生了什么变化 看起来是这样的:Javascript jquery timepicker不会使用React更新道具更改,javascript,jquery,reactjs,timepicker,Javascript,Jquery,Reactjs,Timepicker,我正在尝试在我的React应用程序中使用这个时间选择器。我围绕它编写了一个简单的类,并将当前时间传递给它,无论它在组件外部发生了什么变化 看起来是这样的: import React, { Component } from 'react'; import jQuery from 'jquery'; require('../../../node_modules/jquery-timepicker/jquery.timepicker.js'); export default class TimeP
import React, { Component } from 'react';
import jQuery from 'jquery';
require('../../../node_modules/jquery-timepicker/jquery.timepicker.js');
export default class TimePicker extends Component {
constructor(props) {
super(props);
this.state = {
minTime: props.minTime || '6',
maxTime: props.maxTime || '23',
interval: props.interval || 15,
defaultTime: props.defaultTime || '10',
startTime: props.startTime || '6',
};
this.timepicker = {};
this.onChange = this.onChange.bind(this);
}
onChange(value) {
this.setState({
value,
}, () => {
const { onChange } = this.props;
if (typeof onChange === 'function') {
this.props.onChange(value);
}
});
}
componentDidUpdate() {
const {
minTime,
maxTime,
interval,
defaultTime,
startTime,
} = this.state;
jQuery(this.timepicker).timepicker({
timeFormat: 'HH:mm',
interval,
minTime,
maxTime,
defaultTime,
startTime,
dynamic: true,
dropdown: true,
scrollbar: true,
change: (value) => {
this.onChange(value);
},
});
}
componentWillReceiveProps(nextProps) {
this.setState({
defaultTime: nextProps.defaultTime,
});
}
componentDidMount() {
const {
minTime,
maxTime,
interval,
defaultTime,
startTime,
} = this.state;
jQuery(this.timepicker).timepicker({
timeFormat: 'HH:mm',
interval,
minTime,
maxTime,
defaultTime,
startTime,
dynamic: true,
dropdown: true,
scrollbar: true,
change: (value) => {
this.onChange(value);
},
});
}
render() {
return (
<input
className="timepicker"
ref={(timepicker) => { this.timepicker = timepicker; }}
/>
);
}
}
TimePicker.propTypes = {
minTime: React.PropTypes.string,
maxTime: React.PropTypes.string,
interval: React.PropTypes.number,
defaultTime: React.PropTypes.string,
startTime: React.PropTypes.string,
onChange: React.PropTypes.func,
};
import React,{Component}来自'React';
从“jQuery”导入jQuery;
require('../../../node_modules/jquery timepicker/jquery.timepicker.js');
导出默认类时间选择器扩展组件{
建造师(道具){
超级(道具);
此.state={
minTime:props.minTime | | |“6”,
maxTime:props.maxTime | | |“23”,
间隔:道具。间隔| | 15,
defaultTime:props.defaultTime | |“10”,
startTime:props.startTime | | |“6”,
};
this.timepicker={};
this.onChange=this.onChange.bind(this);
}
onChange(值){
这是我的国家({
价值
}, () => {
const{onChange}=this.props;
if(类型onChange=='function'){
this.props.onChange(值);
}
});
}
componentDidUpdate(){
常数{
minTime,
maxTime,
间隔
默认时间,
开始的时候,
}=本州;
jQuery(this.timepicker).timepicker({
时间格式:“HH:mm”,
间隔
minTime,
maxTime,
默认时间,
开始的时候,
动态:是的,
下拉列表:正确,
滚动条:对,
更改:(值)=>{
这个。onChange(值);
},
});
}
组件将接收道具(下一步){
这是我的国家({
defaultTime:nextProps.defaultTime,
});
}
componentDidMount(){
常数{
minTime,
maxTime,
间隔
默认时间,
开始的时候,
}=本州;
jQuery(this.timepicker).timepicker({
时间格式:“HH:mm”,
间隔
minTime,
maxTime,
默认时间,
开始的时候,
动态:是的,
下拉列表:正确,
滚动条:对,
更改:(值)=>{
这个。onChange(值);
},
});
}
render(){
返回(
{this.timepicker=timepicker;}}
/>
);
}
}
TimePicker.propTypes={
minTime:React.PropTypes.string,
maxTime:React.PropTypes.string,
间隔:React.PropTypes.number,
defaultTime:React.PropTypes.string,
开始时间:React.PropTypes.string,
onChange:React.PropTypes.func,
};
在第一次装载时,时间是当前设置的,但是当我通过新时间并尝试在组件中设置状态时,时间不会更新
我缺少什么?默认时间用于设置初始时间,但不用于更改现有选择器中的时间
对于更改时间,请使用下面的代码(在componentDidUpdate中)
对不起,它不起作用。你是在哪里发现赛时道具的?我在文件里找不到它。
jQuery(this.timepicker).timepicker({'setTime', TIME);