在R中初始化一个闪亮的应用程序时遇到麻烦。我希望eventReactive从反应式表达式所链接的多个事件中的任何一个触发。该应用程序通常可以按预期运行,但不会在初始化时显示,而是要求用户在显示结果之前选择一个actionButton。为什么会这样?
我阅读了eventReactive的文档,并使用ignoreNULL和ignoreInit设置玩过,并且进行了许多在线搜索。
以下示例。
@IBAction func login(_ sender: Any) {
guard let email = emailInput.text else { return }
guard let password = passwordInput.text else { return }
Auth.auth().signIn(withEmail: email, password: password) { user, error in
if error == nil && user != nil {
self.readData()
self.dismiss(animated: false, completion: nil)
} else {
print("Error logging in: ", error!.localizedDescription)
let alert = UIAlertController(title: "Fehler beim Einloggen", message: error!.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Verstanden", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
}
func readData() {
guard let uid = Auth.auth().currentUser?.uid else { return }
let databaseRef = Database.database().reference()
databaseRef.child("users").child(uid).observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let monthlyStartKmData = value?["monthlyStartKm"] as? Int ?? 0
let currentKmData = value?["currentKm"] as? Int ?? 0
...
startKm = monthlyStartKmData
currentKm = currentKmData
...
}) { (error) in
print(error.localizedDescription)
}
}
答案 0 :(得分:0)
我找到了解决方案。也许不是最优雅的,但可以。
问题在于input$modelFilter
和input$modelFilter
是df2
之后的一个更新。用户选择input$update
的时间无关紧要,因为df2
不会更新,而只是在新创建的df2
期间出现问题,因为过滤器无法匹配数据。>
为解决此问题,我添加了values <- reactiveValues(update = 0)
,每次创建+1
时,它都会增加df3
,并且在新的{{1} } 被建造。如果为0
,则对数据进行过滤,否则,将返回未过滤的数据。
可能有用的链接:How can I set up triggers or execution order for eventReactive or ObserveEvent?
df2