„SwiftUI“ sąveika su „Redux“

Tinklaraštis

„SwiftUI“ sąveika su „Redux“

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas. „SwiftUI“ naudojama deklaratyvaus stiliaus vartotojo sąsajai sukurti, skirtingai nei „UIKit“. „Redux“ savo ruožtu padeda kontroliuoti programos būseną.



Valstija yra pagrindinė „SwiftUI“ ir „Redux“ koncepcija. Mūsų atveju tai ne tik madingas žodis, bet ir subjektas, jungiantis juos ir leidžiantis jiems labai gerai dirbti kartu. Šiame straipsnyje mes stengsimės parodyti, kad aukščiau pateikta tezė yra teisinga, todėl pradėkime!

Prieš gilindamiesi į kodo rašymą, pirmiausia suprasime, kas yra „Redux“ ir iš ko jis susideda.



Redux yra atvirojo kodo biblioteka, skirta programos būsenai valdyti. Jis dažniausiai naudojamas kartu su „React“ arba „Angular“, siekiant sukurti kliento pusę. Jame yra daug įrankių, kurie žymiai supaprastina saugojimo duomenų perdavimą per kontekstą. Jos kūrėjai yra Daniil Abramov ir Andrew Clark.

Mums „Redux“ nėra tik biblioteka, tai jau kažkas daugiau. Priskiriame tai architektūriniams sprendimams, kuriais pagrįsta programa, visų pirma dėl vienpusio duomenų srauto.



Daugiakryptis arba vienkryptis srautas

Norėdami paaiškinti, ką turime omenyje duomenų srautą, pateiksime šį pavyzdį. Programa, sukurta naudojant VIPER, palaiko daugialypį duomenų srautą tarp modulių:

duomenų srautas tarp modulių

„Redux“ savo ruožtu yra vienpusis duomenų srautas, kurį lengviausia paaiškinti pagal sudedamąsias dalis.

„Redux“ duomenų srautas

Pakalbėkime išsamiau apie kiekvieną „Redux“ komponentą.

  • Valstija yra vienintelis tiesos šaltinis, kuriame yra visa mūsų programai reikalinga informacija.
  • Veiksmas yra ketinimas pakeisti būseną. Mūsų atveju tai yra sąrašas, kuriame yra naujos informacijos, kurią norime pridėti ar pakeisti dabartinėje būsenoje.
  • Reduktorius yra funkcija, kuri parametrus laiko veiksmu ir dabartine būsena ir grąžina naują būseną. Tai vienintelis būdas jį sukurti. Taip pat verta paminėti, kad ši funkcija turėtų būti švari.
  • Parduotuvė yra objektas, kuriame yra būsena ir pateikiami visi būtini įrankiai jai atnaujinti.

To turbūt pakaktų pirmajam teorijos žingsniui, o dabar pereikime prie praktikos.

„Redux“ įgyvendinimas

Vienas iš paprasčiausių būdų susipažinti su įrankiu yra pradėti jį naudoti. Visi žino, kad jei norite išmokti programavimo kalbos, turėtumėte parašyti joje programą. Taigi sukurkime nedidelę programą, pavyzdžiui, paprastą treniruočių dienoraštį. Jame bus tik keturi variantai. Pirmasis - rodyti treniruočių sąrašą, antrasis - pridėti užbaigtą treniruotę, trečias - ištrinti, o ketvirtas - rūšiuoti treniruotes. Tai gana paprasta programa, tačiau tuo pat metu ji leis mums susipažinti su „Redux“ ir „SwiftUI“.

Sukurkite švarų projektą „Xcode“, pavadinkite jį „WorkoutsDiary“ ir, svarbiausia, naudotojo sąsajoje pasirinkite „SwiftUI“.

Sukūrę projektą, sukurkite treniruotės struktūrą, kuri bus atsakinga už mūsų atliktą treniruotę.

Greita

išimtis temoje „pagrindinis“ java.lang.stringindexoutofboundsexception: eilutės indeksas nepatenka į diapazoną: 1

1

import Foundation

2

3

struct Workout: Identifiable {

4

let id: UUID = .init()

5

let name: String

6

let distance: String

7

let date: Date

8

let complexity: Complexity

9

}

Kaip matote, šioje struktūroje nėra nieko sudėtingo, id laukas turi atitikti identifikuojamą protokolą, o sudėtingumo laukas yra tik enum su tokiu apibrėžimu:

Greita

1

enum Complexity: Int {

2

case low

3

case medium

4

case high

5

}

Dabar turime viską, ko reikia „Redux“ diegimui. Pradėkime nuo valstybės kūrimo.

Anglų filmai 1080p atsisiųsti nemokamai

Greita

1

struct AppState {

2

var workouts: [Workout]

3

var sortType: SortType?

4

}

Valstija yra paprasta struktūra, kurią sudaro du laukai: treniruotės ir „sortType“. Pirmasis yra treniruočių sąrašas, o antrasis - pasirenkamas laukas, kuris nustato, kaip sąrašas rūšiuojamas.

„SortType“ yra sąrašas, kuris apibrėžiamas taip:

Greita

1

enum SortType {

2

case distance

3

case complexity

4

}

Paprastumo dėlei mes surūšiuosime pagal atstumą ir sunkumus mažėjančia tvarka. Tai reiškia, kad kuo sudėtingesnis mūsų mokymas, tuo jis bus rodomas mūsų sąraše. Verta paminėti, kad sortType yra neprivalomas tipas ir jis gali būti nulinis, o tai reiškia, kad šiuo metu sąrašas nėra surūšiuotas.

kaip nusipirkti „wink“ žetoną

Mes tęsime savo komponentų diegimą. Sukurkime veiksmą:

Greita

1

enum Action {

2

case addWorkout(_ workout: Workout)

3

case removeWorkout(at: IndexSet)

4

case sort(by: SortType)

5

}

Kaip matome, „Veiksmas“ yra trijų atvejų sąrašas, suteikiantis mums galimybę manipuliuoti savo valstybe.

  • | _+_ | tiesiog prideda treniruotę, kuri perduodama kaip parametras.
  • | _+_ | pašalina elementą pagal nurodytą indeksą.
  • | _+_ | rūšiuoja mokymų sąrašą pagal nurodytą rūšiavimo tipą.

Sukurkime vieną iš sudėtingiausių komponentų. tai yra Reduktorius :

Greita

1

addWorkout(_ workout: Workout)

2

removeWorkout(at: IndexSet)

3

sort(by: SortType)

4

func reducer(state: AppState, action: Action) -> AppState {

5

var state = state

6

switch action {

7

case .addWorkout(let workout):

8

state.workouts.append(workout)

9

case .removeWorkout(let indexSet):

10

state.workouts.remove(atOffsets: indexSet)

vienuolika

switch type {

12

case .distance:

13

state.workouts.sort {

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas. „SwiftUI“ naudojama deklaratyvaus stiliaus vartotojo sąsajai sukurti, skirtingai nei „UIKit“. „Redux“ savo ruožtu padeda kontroliuoti programos būseną.

Valstija yra pagrindinė „SwiftUI“ ir „Redux“ koncepcija. Mūsų atveju tai ne tik madingas žodis, bet ir subjektas, jungiantis juos ir leidžiantis jiems labai gerai dirbti kartu. Šiame straipsnyje mes stengsimės parodyti, kad aukščiau pateikta tezė yra teisinga, todėl pradėkime!

Prieš gilindamiesi į kodo rašymą, pirmiausia suprasime, kas yra „Redux“ ir iš ko jis susideda.

Redux yra atvirojo kodo biblioteka, skirta programos būsenai valdyti. Jis dažniausiai naudojamas kartu su „React“ arba „Angular“, siekiant sukurti kliento pusę. Jame yra daug įrankių, kurie žymiai supaprastina saugojimo duomenų perdavimą per kontekstą. Jos kūrėjai yra Daniil Abramov ir Andrew Clark.

Mums „Redux“ nėra tik biblioteka, tai jau kažkas daugiau. Priskiriame tai architektūriniams sprendimams, kuriais pagrįsta programa, visų pirma dėl vienpusio duomenų srauto.

Daugiakryptis arba vienkryptis srautas

Norėdami paaiškinti, ką turime omenyje duomenų srautą, pateiksime šį pavyzdį. Programa, sukurta naudojant VIPER, palaiko daugialypį duomenų srautą tarp modulių:

duomenų srautas tarp modulių

„Redux“ savo ruožtu yra vienpusis duomenų srautas, kurį lengviausia paaiškinti pagal sudedamąsias dalis.

„Redux“ duomenų srautas

Pakalbėkime išsamiau apie kiekvieną „Redux“ komponentą.

  • Valstija yra vienintelis tiesos šaltinis, kuriame yra visa mūsų programai reikalinga informacija.
  • Veiksmas yra ketinimas pakeisti būseną. Mūsų atveju tai yra sąrašas, kuriame yra naujos informacijos, kurią norime pridėti ar pakeisti dabartinėje būsenoje.
  • Reduktorius yra funkcija, kuri parametrus laiko veiksmu ir dabartine būsena ir grąžina naują būseną. Tai vienintelis būdas jį sukurti. Taip pat verta paminėti, kad ši funkcija turėtų būti švari.
  • Parduotuvė yra objektas, kuriame yra būsena ir pateikiami visi būtini įrankiai jai atnaujinti.

To turbūt pakaktų pirmajam teorijos žingsniui, o dabar pereikime prie praktikos.

„Redux“ įgyvendinimas

Vienas iš paprasčiausių būdų susipažinti su įrankiu yra pradėti jį naudoti. Visi žino, kad jei norite išmokti programavimo kalbos, turėtumėte parašyti joje programą. Taigi sukurkime nedidelę programą, pavyzdžiui, paprastą treniruočių dienoraštį. Jame bus tik keturi variantai. Pirmasis - rodyti treniruočių sąrašą, antrasis - pridėti užbaigtą treniruotę, trečias - ištrinti, o ketvirtas - rūšiuoti treniruotes. Tai gana paprasta programa, tačiau tuo pat metu ji leis mums susipažinti su „Redux“ ir „SwiftUI“.

Sukurkite švarų projektą „Xcode“, pavadinkite jį „WorkoutsDiary“ ir, svarbiausia, naudotojo sąsajoje pasirinkite „SwiftUI“.

Sukūrę projektą, sukurkite treniruotės struktūrą, kuri bus atsakinga už mūsų atliktą treniruotę.

Greita

1

import Foundation

2

3

struct Workout: Identifiable {

4

let id: UUID = .init()

5

let name: String

6

let distance: String

7

let date: Date

8

let complexity: Complexity

9

}

Kaip matote, šioje struktūroje nėra nieko sudėtingo, id laukas turi atitikti identifikuojamą protokolą, o sudėtingumo laukas yra tik enum su tokiu apibrėžimu:

Greita

1

enum Complexity: Int {

2

case low

3

case medium

4

case high

5

}

Dabar turime viską, ko reikia „Redux“ diegimui. Pradėkime nuo valstybės kūrimo.

Greita

1

struct AppState {

2

var workouts: [Workout]

3

var sortType: SortType?

4

}

Valstija yra paprasta struktūra, kurią sudaro du laukai: treniruotės ir „sortType“. Pirmasis yra treniruočių sąrašas, o antrasis - pasirenkamas laukas, kuris nustato, kaip sąrašas rūšiuojamas.

„SortType“ yra sąrašas, kuris apibrėžiamas taip:

Greita

1

enum SortType {

2

case distance

3

case complexity

4

}

Paprastumo dėlei mes surūšiuosime pagal atstumą ir sunkumus mažėjančia tvarka. Tai reiškia, kad kuo sudėtingesnis mūsų mokymas, tuo jis bus rodomas mūsų sąraše. Verta paminėti, kad sortType yra neprivalomas tipas ir jis gali būti nulinis, o tai reiškia, kad šiuo metu sąrašas nėra surūšiuotas.

Mes tęsime savo komponentų diegimą. Sukurkime veiksmą:

Greita

1

enum Action {

2

case addWorkout(_ workout: Workout)

3

case removeWorkout(at: IndexSet)

4

case sort(by: SortType)

5

}

Kaip matome, „Veiksmas“ yra trijų atvejų sąrašas, suteikiantis mums galimybę manipuliuoti savo valstybe.

  • | _+_ | tiesiog prideda treniruotę, kuri perduodama kaip parametras.
  • | _+_ | pašalina elementą pagal nurodytą indeksą.
  • | _+_ | rūšiuoja mokymų sąrašą pagal nurodytą rūšiavimo tipą.

Sukurkime vieną iš sudėtingiausių komponentų. tai yra Reduktorius :

Greita

1

addWorkout(_ workout: Workout)

2

removeWorkout(at: IndexSet)

3

sort(by: SortType)

4

func reducer(state: AppState, action: Action) -> AppState {

5

var state = state

6

switch action {

7

case .addWorkout(let workout):

8

state.workouts.append(workout)

9

case .removeWorkout(let indexSet):

10

state.workouts.remove(atOffsets: indexSet)

vienuolika

switch type {

12

case .distance:

13

state.workouts.sort { $0.distance > $1.distance }

14

state.sortType = .distance

penkiolika

case .complexity:

16

state.workouts.sort { $0.complexity.rawValue > $1.complexity.rawValue }

17

state.sortType = .complexity

18

}

Mūsų parašyta funkcija yra gana paprasta ir veikia taip:

  1. Jis nukopijuoja dabartinę valstybę dirbti su ja.
  2. Remdamiesi veiksmais atnaujiname nukopijuotą būseną.
  3. Grąžiname atnaujintą būseną.

Reikėtų pažymėti, kad aukščiau pateikta funkcija yra gryna funkcija, ir tai mes norėjome pasiekti! Kad funkcija būtų laikoma gryna, ji turi atitikti dvi sąlygas:

  • Kiekvieną kartą funkcija grąžina tą patį rezultatą, kai ji iškviečiama tuo pačiu duomenų rinkiniu.
  • Šalutinio poveikio nėra.

Paskutinis trūkstamas „Redux“ elementas yra parduotuvė, todėl įgyvendinkime ją savo programai.

Greita

1

}

2

return state

3

}

4

final class Store: ObservableObject {

5

6

@Published private(set) var state: AppState

7

init(state: AppState = .init(workouts: [Workout]())) {

8

self.state = state

9

public func dispatch(action: Action) {

Įgyvendindami „Store“ objektą, naudojame visus | _+_ | pranašumus protokolas, kuris leidžia mums neįtraukti didelio šablono kodo rašymo ar trečiųjų šalių sistemų naudojimo. Valstybės nuosavybė yra tik skaitoma ir naudojama | _+_ | nuosavybė, o tai reiškia, kad kai ji bus pakeista, „SwiftUI“ gaus pranešimus.

Pradinis metodas įgyja pradinę būseną kaip parametrą su numatyta numatyta reikšme tuščio treniruotės elementų masyvo pavidalu. Siuntimo funkcija yra vienintelis būdas atnaujinti būseną: ji pakeičia esamą būseną nauja, sukurta reduktoriaus funkcija, remiantis veiksmu, kuris perduodamas kaip parametras.

Įdiegę visus „Redux“ komponentus, galime pradėti kurti savo programos vartotojo sąsają.

#mokomoji #mobiliųjų aplikacijų kūrimas #greitas #redux #sąveika

dzone.com

„SwiftUI“ sąveika su „Redux“

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas.

.distance > .distance }

14

state.sortType = .distance

penkiolika

case .complexity:

16

state.workouts.sort {

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas. „SwiftUI“ naudojama deklaratyvaus stiliaus vartotojo sąsajai sukurti, skirtingai nei „UIKit“. „Redux“ savo ruožtu padeda kontroliuoti programos būseną.

Valstija yra pagrindinė „SwiftUI“ ir „Redux“ koncepcija. Mūsų atveju tai ne tik madingas žodis, bet ir subjektas, jungiantis juos ir leidžiantis jiems labai gerai dirbti kartu. Šiame straipsnyje mes stengsimės parodyti, kad aukščiau pateikta tezė yra teisinga, todėl pradėkime!

Prieš gilindamiesi į kodo rašymą, pirmiausia suprasime, kas yra „Redux“ ir iš ko jis susideda.

Redux yra atvirojo kodo biblioteka, skirta programos būsenai valdyti. Jis dažniausiai naudojamas kartu su „React“ arba „Angular“, siekiant sukurti kliento pusę. Jame yra daug įrankių, kurie žymiai supaprastina saugojimo duomenų perdavimą per kontekstą. Jos kūrėjai yra Daniil Abramov ir Andrew Clark.

Mums „Redux“ nėra tik biblioteka, tai jau kažkas daugiau. Priskiriame tai architektūriniams sprendimams, kuriais pagrįsta programa, visų pirma dėl vienpusio duomenų srauto.

Daugiakryptis arba vienkryptis srautas

Norėdami paaiškinti, ką turime omenyje duomenų srautą, pateiksime šį pavyzdį. Programa, sukurta naudojant VIPER, palaiko daugialypį duomenų srautą tarp modulių:

duomenų srautas tarp modulių

„Redux“ savo ruožtu yra vienpusis duomenų srautas, kurį lengviausia paaiškinti pagal sudedamąsias dalis.

„Redux“ duomenų srautas

Pakalbėkime išsamiau apie kiekvieną „Redux“ komponentą.

  • Valstija yra vienintelis tiesos šaltinis, kuriame yra visa mūsų programai reikalinga informacija.
  • Veiksmas yra ketinimas pakeisti būseną. Mūsų atveju tai yra sąrašas, kuriame yra naujos informacijos, kurią norime pridėti ar pakeisti dabartinėje būsenoje.
  • Reduktorius yra funkcija, kuri parametrus laiko veiksmu ir dabartine būsena ir grąžina naują būseną. Tai vienintelis būdas jį sukurti. Taip pat verta paminėti, kad ši funkcija turėtų būti švari.
  • Parduotuvė yra objektas, kuriame yra būsena ir pateikiami visi būtini įrankiai jai atnaujinti.

To turbūt pakaktų pirmajam teorijos žingsniui, o dabar pereikime prie praktikos.

„Redux“ įgyvendinimas

Vienas iš paprasčiausių būdų susipažinti su įrankiu yra pradėti jį naudoti. Visi žino, kad jei norite išmokti programavimo kalbos, turėtumėte parašyti joje programą. Taigi sukurkime nedidelę programą, pavyzdžiui, paprastą treniruočių dienoraštį. Jame bus tik keturi variantai. Pirmasis - rodyti treniruočių sąrašą, antrasis - pridėti užbaigtą treniruotę, trečias - ištrinti, o ketvirtas - rūšiuoti treniruotes. Tai gana paprasta programa, tačiau tuo pat metu ji leis mums susipažinti su „Redux“ ir „SwiftUI“.

Sukurkite švarų projektą „Xcode“, pavadinkite jį „WorkoutsDiary“ ir, svarbiausia, naudotojo sąsajoje pasirinkite „SwiftUI“.

Sukūrę projektą, sukurkite treniruotės struktūrą, kuri bus atsakinga už mūsų atliktą treniruotę.

Greita

1

import Foundation

2

3

struct Workout: Identifiable {

4

let id: UUID = .init()

5

let name: String

6

let distance: String

7

let date: Date

8

let complexity: Complexity

9

}

Kaip matote, šioje struktūroje nėra nieko sudėtingo, id laukas turi atitikti identifikuojamą protokolą, o sudėtingumo laukas yra tik enum su tokiu apibrėžimu:

Greita

1

enum Complexity: Int {

2

case low

3

case medium

4

case high

5

}

Dabar turime viską, ko reikia „Redux“ diegimui. Pradėkime nuo valstybės kūrimo.

Greita

1

struct AppState {

2

var workouts: [Workout]

3

var sortType: SortType?

4

}

Valstija yra paprasta struktūra, kurią sudaro du laukai: treniruotės ir „sortType“. Pirmasis yra treniruočių sąrašas, o antrasis - pasirenkamas laukas, kuris nustato, kaip sąrašas rūšiuojamas.

„SortType“ yra sąrašas, kuris apibrėžiamas taip:

Greita

1

enum SortType {

2

case distance

3

case complexity

4

}

Paprastumo dėlei mes surūšiuosime pagal atstumą ir sunkumus mažėjančia tvarka. Tai reiškia, kad kuo sudėtingesnis mūsų mokymas, tuo jis bus rodomas mūsų sąraše. Verta paminėti, kad sortType yra neprivalomas tipas ir jis gali būti nulinis, o tai reiškia, kad šiuo metu sąrašas nėra surūšiuotas.

Mes tęsime savo komponentų diegimą. Sukurkime veiksmą:

Greita

1

enum Action {

2

case addWorkout(_ workout: Workout)

3

case removeWorkout(at: IndexSet)

4

case sort(by: SortType)

5

}

Kaip matome, „Veiksmas“ yra trijų atvejų sąrašas, suteikiantis mums galimybę manipuliuoti savo valstybe.

  • | _+_ | tiesiog prideda treniruotę, kuri perduodama kaip parametras.
  • | _+_ | pašalina elementą pagal nurodytą indeksą.
  • | _+_ | rūšiuoja mokymų sąrašą pagal nurodytą rūšiavimo tipą.

Sukurkime vieną iš sudėtingiausių komponentų. tai yra Reduktorius :

Greita

1

addWorkout(_ workout: Workout)

2

removeWorkout(at: IndexSet)

3

sort(by: SortType)

4

func reducer(state: AppState, action: Action) -> AppState {

5

var state = state

6

switch action {

7

case .addWorkout(let workout):

8

state.workouts.append(workout)

9

case .removeWorkout(let indexSet):

10

state.workouts.remove(atOffsets: indexSet)

vienuolika

switch type {

12

case .distance:

13

state.workouts.sort { $0.distance > $1.distance }

14

state.sortType = .distance

penkiolika

case .complexity:

16

state.workouts.sort { $0.complexity.rawValue > $1.complexity.rawValue }

17

state.sortType = .complexity

18

}

Mūsų parašyta funkcija yra gana paprasta ir veikia taip:

  1. Jis nukopijuoja dabartinę valstybę dirbti su ja.
  2. Remdamiesi veiksmais atnaujiname nukopijuotą būseną.
  3. Grąžiname atnaujintą būseną.

Reikėtų pažymėti, kad aukščiau pateikta funkcija yra gryna funkcija, ir tai mes norėjome pasiekti! Kad funkcija būtų laikoma gryna, ji turi atitikti dvi sąlygas:

  • Kiekvieną kartą funkcija grąžina tą patį rezultatą, kai ji iškviečiama tuo pačiu duomenų rinkiniu.
  • Šalutinio poveikio nėra.

Paskutinis trūkstamas „Redux“ elementas yra parduotuvė, todėl įgyvendinkime ją savo programai.

Greita

1

}

2

return state

3

}

4

final class Store: ObservableObject {

5

6

@Published private(set) var state: AppState

7

init(state: AppState = .init(workouts: [Workout]())) {

8

self.state = state

9

public func dispatch(action: Action) {

Įgyvendindami „Store“ objektą, naudojame visus | _+_ | pranašumus protokolas, kuris leidžia mums neįtraukti didelio šablono kodo rašymo ar trečiųjų šalių sistemų naudojimo. Valstybės nuosavybė yra tik skaitoma ir naudojama | _+_ | nuosavybė, o tai reiškia, kad kai ji bus pakeista, „SwiftUI“ gaus pranešimus.

Pradinis metodas įgyja pradinę būseną kaip parametrą su numatyta numatyta reikšme tuščio treniruotės elementų masyvo pavidalu. Siuntimo funkcija yra vienintelis būdas atnaujinti būseną: ji pakeičia esamą būseną nauja, sukurta reduktoriaus funkcija, remiantis veiksmu, kuris perduodamas kaip parametras.

Įdiegę visus „Redux“ komponentus, galime pradėti kurti savo programos vartotojo sąsają.

#mokomoji #mobiliųjų aplikacijų kūrimas #greitas #redux #sąveika

dzone.com

„SwiftUI“ sąveika su „Redux“

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas.

.complexity.rawValue > .complexity.rawValue }

17

state.sortType = .complexity

18

}

Mūsų parašyta funkcija yra gana paprasta ir veikia taip:

  1. Jis nukopijuoja dabartinę valstybę dirbti su ja.
  2. Remdamiesi veiksmais atnaujiname nukopijuotą būseną.
  3. Grąžiname atnaujintą būseną.

Reikėtų pažymėti, kad aukščiau pateikta funkcija yra gryna funkcija, ir tai mes norėjome pasiekti! Kad funkcija būtų laikoma gryna, ji turi atitikti dvi sąlygas:

  • Kiekvieną kartą funkcija grąžina tą patį rezultatą, kai ji iškviečiama tuo pačiu duomenų rinkiniu.
  • Šalutinio poveikio nėra.

Paskutinis trūkstamas „Redux“ elementas yra parduotuvė, todėl įgyvendinkime ją savo programai.

Greita

1

}

2

return state

3

}

4

final class Store: ObservableObject {

5

6

@Published private(set) var state: AppState

7

init(state: AppState = .init(workouts: [Workout]())) {

8

self.state = state

9

React nukreipimo puslapio šablonas nemokamai
public func dispatch(action: Action) {

Įgyvendindami „Store“ objektą, naudojame visus | _+_ | pranašumus protokolas, kuris leidžia mums neįtraukti didelio šablono kodo rašymo ar trečiųjų šalių sistemų naudojimo. Valstybės nuosavybė yra tik skaitoma ir naudojama | _+_ | nuosavybė, o tai reiškia, kad kai ji bus pakeista, „SwiftUI“ gaus pranešimus.

Pradinis metodas įgyja pradinę būseną kaip parametrą su numatyta numatyta reikšme tuščio treniruotės elementų masyvo pavidalu. Siuntimo funkcija yra vienintelis būdas atnaujinti būseną: ji pakeičia esamą būseną nauja, sukurta reduktoriaus funkcija, remiantis veiksmu, kuris perduodamas kaip parametras.

Įdiegę visus „Redux“ komponentus, galime pradėti kurti savo programos vartotojo sąsają.

#mokomoji #mobiliųjų aplikacijų kūrimas #greitas #redux #sąveika

dzone.com

„SwiftUI“ sąveika su „Redux“

Šiame straipsnyje mes kalbėsime apie „SwiftUI“ sistemą kartu su „Redux“. Ši pora leidžia greitai ir lengvai kurti programas.