ts在taro類組件中怎么使用定義使用state,使用方式跟在js類組件中一樣,直接使用this.state.屬性名,使用方式一樣,
定義state稍微有點區別,在js中我們是這樣定義的:
class Index extends Component {
constructor(props) {
super(props)
this.state = {
navList: [],
Tjsp_flag: false,
topbanner_data: [],
banner_data2: [],
collegead_ad: [],
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
但是在ts中需要先給參數進行類型約定,不能直接給想js中那樣寫,
寫TS像寫go一樣要指定一個類型 變量名:類型名,或者函數參數綁定一個接口類型聲明,(Ts)例如:
interface State {
topbanner_data: Array<any>
hotSearchArr: Array<any>
navList: Array<any>
inBanner_Data: Array<any>
midBannerCurrent: Number
yunying_data: Array<any>
videoad: Array<any>
gkNews: Array<any>
collegead_ad: Array<any>
}
interface Props{
place: Object
}
export default class Index extends Component<Props, State>{
readonly state : Readonly<State> = {
topbanner_data: [],
hotSearchArr: [],
navList: [],
inBanner_Data: [],
midBannerCurrent: 0,
yunying_data: [],
videoad: [],
gkNews: [],
collegead_ad: [],
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
這樣就可以解決在類組件中怎么定義變量了,使用還是用this.state.屬性名這樣調用
hook中使用Ts
可以直接像js中那樣定義變量,進行使用,系統會根據初始值自動進行類型綁定,
例如:
const [choice, setChoice] = useState(false)
setChoice(1) // 此時會報錯,choice類型初始值類型為Boolean,賦值只能為true||false
const [str, setStr] = useState('微信') // 初始值 string
setStr(1) // 此時會報錯 類型“number”的參數不能賦給類型“SetStateAction<string>”的參數
setStr("1") // 正確寫法
// 也可以在初始化的時候先約定好類型
const [str, setStr] = useState<Number>('微信') // 此時會拋出錯誤 類型“string”的參數不能賦給類型“Number | (() => Number)”的參數。
// 正確寫法,初始值類型與前面<>里面約定的類型保持一致
const [str, setStr] = useState<Number>(111)
1
2
3
4
5
6
7
8
9
10
前端攻城獅J
關注
————————————————
版權聲明:本文為CSDN博主「前端攻城獅J」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_46662539/article/details/121270227