【发布时间】:2019-10-19 12:40:55
【问题描述】:
我不喜欢我的标题,但这是我能想到的最好的标题。基本上,我有两个视图:SearchInput 和 SearchResultList。用户使用 SearchInput 输入搜索词,点击“Go”,然后使用 SearchResultList 查看搜索结果。代码是:
struct SearchInput: View {
@State private var searchTerm: String = ""
var searchResult: [RTDocument] {
return RuntimeDataModel.shared.fetchRTDocuments(matching: self.searchTerm)
}
var body: some View {
NavigationView {
VStack {
TextField("Enter search term...", text: self.$searchTerm)
NavigationLink(destination: SearchResultList(
rtDocuments: self.searchResult
)) { Text("Go") } //NavigationLink
} //VStack
} //NavigationView
} //body
} //SearchInput
我遇到的问题是,每次用户在 TextField 中输入一个字符时,绑定状态变量 searchTerm 都会更新,这会导致 NavigationLink 重新评估其目的地——这会导致在计算的 searchResult 变量中获取核心数据.
我希望提取只发生一次,当用户点击“Go”时。有没有办法做到这一点?
【问题讨论】: