【问题标题】:Argument of type 'number[]' is not assignable to parameter of type 'SetStateAction<ICoord | undefined>''number[]' 类型的参数不可分配给 'SetStateAction<ICoord | 类型的参数未定义>'
【发布时间】:2021-01-03 23:59:48
【问题描述】:

我开始使用 Ionic-react 打字,所以我在设置我的状态时遇到打字问题

这是我的代码

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 | 未定义'。

【问题讨论】:

  • 你需要setdata({ data: coordinates })

标签: reactjs typescript ionic-framework ionic4 ionic-react


【解决方案1】:
const [data, setdata] = useState<ICoord | undefined>();

【讨论】:

    【解决方案2】:

    只是失去“ICoord”,因为你只有一个值,你不需要写更多的代码。此外,在 useState 中,您可以定义数据类型

    const [data, setData] = useState([])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 2022-11-12
      • 1970-01-01
      • 2021-03-08
      • 2021-11-18
      • 2020-06-19
      • 2019-10-23
      • 2021-05-16
      相关资源
      最近更新 更多