javascript - 如何从 React 中的 DateTime 选择器获取值?
问题描述
我使用 Material-UI 来创建一个 DateTime 选择器。这是我的演示代码。
我添加console.log
到函数handleChange
中是为了查看当前选择的值。但是,当我使用 DatTime 选择器时,该值不会改变:
handleChange = name => event => {
const target = event.target;
const name = target.name;
console.log("plannedDep", this.state.plannedDep)
this.setState({
[name]: event.target.value
});
};
解决方案
我将状态值作为默认值添加到plannedDep。
value={this.state.plannedDep}
我以这种方式更改了 onChange
onChange={(event) => this.handleChange("plannedDep", event)}
:。按照您的代码,onChange={this.handleChange("plannedDep")}
您拥有的 onchange 将在组件安装后立即触发,并且每次状态/道具更改都会导致不必要的渲染。
<TextField
id="datetime-local"
label="Next appointment"
type="datetime-local"
onChange={(event) => this.handleChange("plannedDep", event)}
value={this.state.plannedDep}
className={classes.textField}
InputLabelProps={{
shrink: true,
}}
/>
- 我们必须在设置状态之后检查值,而不是在设置之前。我在 setState 的回调中进行检查,它向我显示了更新的值。
handleChange = (name, event) => {
const target = event.target; // Do we need this?(unused in the function scope)!
this.setState({
[name]: event.target.value
}, () => {
console.log(this.state.plannedDep)
// Prints the new value.
});
};
我希望这能解决你的问题:)
推荐阅读
- mongodb - runCommand vs 聚合方法做聚合
- javascript - jQuery 缩放放大太多
- qooxdoo - QooxDoo 应用程序类型
- neo4j - Neo4J - 错误 Win 10 - 初始化错误:TypeError:无法读取属性:未定义的“名称”
- android - 如何防止应用选择对话框?
- javascript - 如何取消压缩js文件?
- point-cloud-library - 如何从原始点云中可视化描述符和关键点?
- ios - 构建项目出错,无法在 Xcode 中构建或运行它
- apache-flink - 使用 CEPH 作为持久存储的配置?
- hyperledger-fabric - 如何将更多排序节点添加到正在运行的超级账本结构网络