Skip to content

Latest commit

 

History

History
34 lines (21 loc) · 1.4 KB

ProvideModifierWithParameter.md

File metadata and controls

34 lines (21 loc) · 1.4 KB

引数を持つmodifierを提供する

引数内で状態の条件分岐を記述できるよう、引数を持つmodifierを提供します。

Overview

SwiftUIでは、条件に応じてViewの見た目や振る舞いを変更することがよくあります。引数のないmodifierを使用する場合、利用側はif文による条件分岐を使用するしかありませんが、これはView identityが変更され、パフォーマンスの低下を招きます。

引数を持つmodifierを提供することで、利用側はmodifierの引数の中で条件分岐を記述でき、View identityを保持したままmodifierを条件によって変更できます。

引数のないmodifierの問題点

引数のないmodifierを条件分岐によって切り替えるには、if文を使用する必要があります:

struct ContentView: View {
    @State var condition = false

    var body: some View {
        xxx
    }
}

この実装では、conditionの値が変わるたびに、TextがView identityの異なるViewに再構築されます。これにより、状態変更のたびに完全な再構築が必要となり、パフォーマンスが低下します。

条件分岐をmodifierの引数に移動する

引数を持つmodifierを提供すると、条件分岐を引数に移動することで同一のView identityで表現できます:

xxx