小编Cla*_*y_F的帖子

在 SwiftUI 中更新/编辑数组元素的最佳方式

我有一系列可识别的 Training 元素。每个 Training 元素只有两个属性,name 和 isRequired。

将数组元素的现有值更新为新的编辑值的最直接(Swiftyiest)方法是什么......编辑后的值稍后将提交到数据库。

是否可以将EditTraining视图(子)中的状态设置为传入的(父)值,然后在子视图中编辑状态?

我被困在这个问题上的时间比我承认的要长。

非常感谢您的任何帮助!

这是代码:

import SwiftUI

struct Training: Identifiable {
    let id: String
    let trainingName: String
    let isRequired: Bool
}

class GetTrainings: ObservableObject {
    @Published var items = [Training]()

    init() {
        self.items = [
            Training(id: "ttt1", trainingName: "Safety", isRequired: true),
            Training(id: "ttt2", trainingName: "Administrative", isRequired: false),
            Training(id: "ttt3", trainingName: "Computer", isRequired: true),
            Training(id: "ttt4", trainingName: "People", isRequired: true),
            Training(id: "ttt5", trainingName: "Managerial", isRequired: true),
        ]
    }
}

struct TrainingList: View …
Run Code Online (Sandbox Code Playgroud)

arrays edit swift swiftui

5
推荐指数
1
解决办法
2272
查看次数

不改变状态的React滤波器方法

我目前的状态是这样的:

state = { items : [{id: 1, text: 'test words'}, {id: 2, text: 'another test'}]
Run Code Online (Sandbox Code Playgroud)

这是我从阵列中删除对象的功能,试图避免改变状态。

handleRemove(passedInId) {

  const myItems = this.state.items

  const newArray = myItems.filter(item => item.id !== passedInId)

  this.setState(prevState => ({
    items: prevState.items = newArray
  }))

  console.log('handle remove runned', passedInId, myItems, newArray)

}
Run Code Online (Sandbox Code Playgroud)

它可以正常工作,但是在继续生活之前想知道它是否不是反模式

非常感谢!!

javascript setstate ecmascript-6 reactjs

1
推荐指数
1
解决办法
5077
查看次数

标签 统计

arrays ×1

ecmascript-6 ×1

edit ×1

javascript ×1

reactjs ×1

setstate ×1

swift ×1

swiftui ×1