-
安装库,使用react-datepicker,并获得公文样例代码。
-
我在Vcode中编写了官方文档的代码,所以我认为它会像官方文档一样工作。
-
然而,它在标题中显示了一个错误信息,并确定了一个无法呈现的问题
-
现有项目是否有影响?然后,创建了一个新项目,只安装了库,并执行了反应,但是发生了相同的错误。
-
那么,如果CodeSandbox有相同的环境,这里会有一个错误吗?我检查过了,但它在CodeSandbox上工作得很好。
-
tscconfig.json
也统一了CodeSandbox,但状态没有变化。
package.json
"@types/react-datepicker": "^4.8.0",
"react": "^18.2.0",
"react-datepicker": "^4.8.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"typescript": "^4.9.4",
错误消息
TS2345: Argument of type 'Date | null' is not assignable to parameter of type 'SetStateAction<Date>'.
Type 'null' is not assignable to type 'SetStateAction<Date>'.
return (
10 | <div className="App">
> 11 | <DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />
| ^^^^
12 | </div>
13 | );
14 | }
错误码(VS Code)
import React, {useState} from 'react';
import DatePicker from 'react-datepicker'
import 'react-datepicker/dist/react-datepicker.css'
function App() {
const [startDate, setStartDate] = useState(new Date())
return (
<div className="App">
<DatePicker selected={startDate} onChange={(date) => setStartDate(date)} />
</div>
);
}
export default App;
但是它在这里太好用了。即使我匹配代码和框tsconfig.json
,错误仍然发生,我应该如何纠正?
设置
时添加if条件onChange={(date) => {
if(date) setStartDate(date)
}}
或者如果你想在useState中支持空值,在这里更新
const [startDate, setStartDate] = useState<Date| null>(new Date())