【发布时间】:2019-08-07 14:53:11
【问题描述】:
在我的代码中,试图通过名为 renderDatePicker() 的函数在 Redux Form 的 <Field> 组件中呈现 <DatePicker>。此函数链接到handleClick() 函数,其中状态变量isOpen 设置为true。
所以理想情况下,onClick 应该呈现 <DatePicker>,因为它设置为可见。但是代码不会更新任何东西。我在哪里做错了?
注意:在没有<Field component=...> 的帮助下直接单独渲染<DatePicker>,效果很好。
为了调试,完整的代码在CodeSandbox中,
SimpleForm.js
import React from "react";
import { reduxForm } from "redux-form";
import { Field } from "redux-form";
import DatePicker from "react-mobile-datepicker";
class SimpleForm extends React.Component {
constructor(props) {
super(props);
this.state = {
time: new Date(),
isOpen: false
};
this.handleClick = this.handleClick.bind(this);
}
renderDatePicker = () => (
<DatePicker
value={this.state.time}
isOpen={this.state.isOpen}
onSelect={this.handleSelect}
onCancel={this.handleCancel}
/>
);
handleClick() {
this.setState({ isOpen: true }, function() {
console.log(this.state.isOpen);
});
}
handleCancel = () => {
this.setState({ isOpen: false });
};
handleSelect = time => {
this.setState({ time, isOpen: false });
};
render() {
return (
<div>
<button className="select-btn" onClick={this.handleClick}>
select time
</button>
<Field
name="date"
type="date"
component={this.renderDatePicker}
label={"date"}
/>
</div>
);
}
}
export default reduxForm({
form: "simple" // a unique identifier for this form
})(SimpleForm);
【问题讨论】:
标签: reactjs datepicker field redux-form