【问题标题】:How do you define types for useState()?你如何定义 useState() 的类型?
【发布时间】:2021-07-17 20:57:32
【问题描述】:

我得到了用户的州/省名称并将其传递到下面的这个数组中。我正在尝试进入该特定状态并将病例和死亡人数作为单独的变量获取。但是,在打字稿中,我遇到了这个错误:Property 'state' does not exist on type 'never'. 关于如何使用类型更改useState 并将其与state 的类型匹配的任何想法?

Array(53)
0: {fips: "02", country: "US", state: "AK", county: null, level: "state", …}
1: {fips: "01", country: "US", state: "AL", county: null, level: "state", …}
2: {fips: "05", country: "US", state: "AR", county: null, level: "state", …}
3: {fips: "04", country: "US", state: "AZ", county: null, level: "state", …}
4: {fips: "06", country: "US", state: "CA", county: null, level: "state", …}
5: {fips: "08", country: "US", state: "CO", county: null, level: "state", …}
6: {fips: "09", country: "US", state: "CT", county: null, level: "state", …}
7: {fips: "11", country: "US", state: "DC", county: null, level: "state", …}
8: {fips: "10", country: "US", state: "DE", county: null, level: "state", …}
9: {fips: "12", country: "US", state: "FL", county: null, level: "state", …}
10: {fips: "13", country: "US", state: "GA", county: null, level: "state", …}

// Goes into the first index of the array 

0:
actuals: {cases: 65944, deaths: 318, positiveTests: 107163, negativeTests: 2044164, contactTracers: 235, …}
annotations: {cases: {…}, deaths: {…}, positiveTests: {…}, negativeTests: {…}, contactTracers: {…}, …}
country: "US"
county: null
fips: "02"
lastUpdatedDate: "2021-04-21"
lat: null
level: "state"
locationId: "iso1:us#iso2:us-ak"
long: null
metrics: {testPositivityRatio: 0.030363378437363597, testPositivityRatioDetails: {…}, caseDensity: 22.164440621268295, contactTracerCapacityRatio: 0.28986784140969163, infectionRate: 0.968046978543, …}
population: 731545
riskLevels: {overall: 2, testPositivityRatio: 1, caseDensity: 2, contactTracerCapacityRatio: 1, infectionRate: 1, …}
state: "AK"
url: "https://covidactnow.org/us/alaska-ak"

下面是我当前的代码。

const [stateName, setStateName] = useState("AK");
  const [data, setData] = useState([]);
  const [stateData, setStateData] = useState();
    
useEffect(() => {      
          axios.get('https://api.covidactnow.org/v2/states.json?apiKey={apiKey}')
          .then(response => response.data)
          .then(responseData => {
              setData(responseData)
              
              
            })  
          .catch(err => {
            console.log(err);
          });
        }, []);

  useEffect(() => {
    setStateData(data.filter(i => i.state === stateName)[0]) //Error
  },[data, stateName])

【问题讨论】:

  • this 回答你的问题了吗?

标签: json typescript react-native axios expo


【解决方案1】:

你可以这样做

const [stateData, setStateData] = useState<any>();

我使用了 any,以便您了解在哪里放置您的类型。 你当然应该定义自己的类型。

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 2017-07-23
    • 2015-03-17
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多