我从离子反应开始打字稿,所以我在设置状态时面临打字稿问题
这是我的代码
import { RouteComponentProps } from "react-router-dom";
type ICoord = {
data: number[];
};
type Props = RouteComponentProps & ICoord;
const Verify: React.FC<Props> = ({ history }) => {
const coordinates: number[] = [];
const [data, setdata] = useState<ICoord>();
useEffect(() => {}, [data]);
const start = () => {
navigator.geolocation.watchPosition(
(data) => {
console.log(data);
coordinates[0] = data.coords.latitude;
coordinates[1] = data.coords.longitude;
setdata(coordinates);
},
(err) => {
console.log(err);
},
{ enableHighAccuracy: true }
);
};
const stop = () => {};
return (
<div>
<button onClick={start}>start</button>
<button onClick={stop}>stop</button>
</div>
);
};
export default Verify;
所以当我尝试在行中设置状态
setdata(coordinates);
它给我错误
类型'number []'的参数不能分配给类型的参数 'SetStateAction
。类型'number []'不是 可分配给类型'(prevState:ICoord | undefined)=> ICoord | 未定义”。
答案 0 :(得分:2)
const [data, setdata] = useState<ICoord | undefined>();
答案 1 :(得分:1)
只是失去了“ ICoord”,因为您只有一个值,不需要编写更多代码。另外,在useState中,您可以定义数据类型
const [data, setData] = useState([])