我正在使用react-datetime开箱即用。
现在,我正在尝试将所选日期保存到date
状态。
import DateTime from 'react-datetime';
import '../DateTime.css';
class SomeClass extends React.Component {
render(){
return (
<div>
<DateTime onChange={this.props.handleDate}/>
...
上述程序有效 - 它会显示一个简单的框,当有人点击它时会显示日历。
以下是handleDate
方法:
...
handleDate(e){
this.setState({date: e.target.value}, () => console.log(this.state.date))
};
它适用于我常规的'react-bootstrap组件:<FormControl type="date" onChange={this.props.handleDate} />
,但当我使用DateTime
时,它表示其值未定义。 “Schedule.js:135 Uncaught TypeError: Cannot read property 'value' of undefined
”
我正在查看npm site中的API,但没有看到任何显示如何获取数据的示例。我可能会重读它。
如何使用DateTime
获取所选日期的值? e.target.value
似乎不适用于此案例。
答案 0 :(得分:5)
来自文档: 日期更改时的回调触发器。如果输入中的日期有效,则回调会将所选时刻对象作为唯一参数接收。如果输入中的日期无效,则回调将接收输入的值(字符串)。
使用此信息,处理程序应如下所示:
handleDate(date){
this.setState({date}); # ES6
};
答案 1 :(得分:1)
要添加到Oluwafemi Sule的答案中,要从矩对象中获取日期对象,您需要使用.toDate(),并且不使用任何内部属性(例如_d)。
Moment使用一种称为“时代转移”的技术来导致这种情况 属性有时与 片刻反映。特别是在使用Moment TimeZone的情况下, 属性几乎永远不会与Moment的实际值相同 将从其公共.format()函数输出。因此, _d和任何其他以_开头的属性均不得用于任何目的。
要打印出Moment的值,请使用.format()、. toString()或 .toISOString()。
要从Moment中检索本地Date对象,请使用.toDate()。这个 函数返回正确偏移的日期以与第三者交互 派对API。
答案 2 :(得分:0)
已经晚了,但是会帮助别人的。
euclid <- function(points1, points2) {
f <- function(x) as.list(data.frame(t(x)))
outer(f(points1), f(points2), function(row, col) {
mapply(function(x, y) sqrt(sum((x - y) ^ 2)), row, col)
})
}
centroid <- colMeans # you should use colMeans, not rowMeans
k_means <- function(x, centers, distFun) {
prevClusters = NULL
prevCenters = NULL
repeat {
distsToCenters = distFun(x, centers)
clusters = max.col(-distsToCenters)
centers = t(vapply(split.data.frame(x, clusters), centroid, numeric(ncol(x))))
if (identical(prevClusters, clusters)) break
prevClusters = clusters
prevCenters = centers
}
list(clusters = clusters, centers = centers)
}
data <- data # Data frame
ktest <- as.matrix(data) # Turn into a matrix
centers <- ktest[sample(nrow(ktest), 5),] # Sample some centers, e.g. 5
res <- k_means(ktest, centers, euclid)
import Datetime from 'react-datetime';