我想显示多个文本字段,代表比赛每个部分的分数。
示例:对于排球比赛,我们有 25/20、25/22、25/23。总体得分为 3/0。
全局组件架构:
>> ParentComponent
>> MainComponent
>> X TextFieldsComponent (2 text fields, home/visitor score)
Run Code Online (Sandbox Code Playgroud)
最底层的组件 TextFieldsComponent 包含基本绑定:
struct TextFieldsComponent: View {
@ObservedObject var model: Model
class Model: ObservableObject, Identifiable, CustomStringConvertible {
let id: String
@Published var firstScore: String
@Published var secondScore: String
var description: String {
"\(firstScore) \(secondScore)"
}
init(id: String, firstScore: String = .empty, secondScore: String = .empty) {
self.id = id
self.firstScore = firstScore
self.secondScore = secondScore
}
}
var body: some View {
HStack …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Reactive jackson hibernate panache mysql 作为数据库构建一个小型应用程序。
我收到以下错误。
"stackTrace": "java.lang.IllegalStateException: 没有为持久单元默认反应定义池\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.registerVertxAndPool(FastBootHibernateReactivePersistenceProvider.java:233)\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.rewireMetadataAndExtractServiceRegistry(FastBootHibernateReactivePersistenceProvider.java:180)\n\tat io.quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.getEntityManagerFactoryBuilderOrNull(FastBootHibernateReactivePers) istenceProvider.java:156)\n\tat io。 quarkus.hibernate.reactive.runtime.FastBootHibernateReactivePersistenceProvider.createEntityManagerFactory(FastBootHibernateReactivePersistenceProvider.java:82)\n\tat javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:80)\n\tat javax.persistence.Persistence.createEntityManagerFactory(持久性。 java:55)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig$LazyPersistenceUnit.get(JPAConfig.java:118)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig.startAll(JPAConfig. java:42)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll$$superaccessor5(JPAConfig_Subclass.zig:769)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass$$function$ $5.apply(JPAConfig_Subclass$$function$$5.zig:29)\n\tat io.quarkus.arc.impl.AroundInvokeInitationContext.proceed(AroundInvokeInvocalContext.java:54)\n\tat io.quarkus.arc.runtime.devconsole .InvocalInterceptor.proceed(InvocalInterceptor.java:62)\n\tat io.quarkus.arc.runtime.devconsole.InvocalInterceptor.monitor(InitationInterceptor.java:51)\n\tat io.quarkus.arc.runtime.devconsole.InitationInterceptor_Bean .intercept(InvocalInterceptor_Bean.zig:521)\n\tat io.quarkus.arc.impl.InterceptorInvoke.invoke(InterceptorInitation.java:41)\n\tat io.quarkus.arc.impl.AroundInvokeInitationContext.perform(AroundInvokeInvocalContext.java :41)\n\tat io.quarkus.arc.impl.InitationContexts.performAroundInvoke(InitationContexts.java:32)\n\tat io.quarkus.hibernate.orm.runtime.JPAConfig_Subclass.startAll(JPAConfig_Subclass.zig:727)\ io.quarkus.hibernate.orm.runtime.HibernateOrmRecorder.startAllPersistenceUnits(HibernateOrmRecorder.java:88)\n\tat io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits951856026.deploy_0(HibernateOrmProcessor$startPersistenceUnits95185 6026.zig:74)\ io.quarkus.deployment.steps.HibernateOrmProcessor$startPersistenceUnits951856026.deploy(HibernateOrmProcessor$startPersistenceUnits951856026.zig:40)\n\tat io.quarkus.runner.ApplicationImpl.doStart(ApplicationImpl.zig:751)\n\tat io .quarkus.runtime.Application.start(Application.java:90)\n\tat io.quarkus.runtime.ApplicationLifecycleManager.run(ApplicationLifecycleManager.java:100)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus .java:66)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus.java:42)\n\tat io.quarkus.runtime.Quarkus.run(Quarkus.java:119)\n\tat io.quarkus.runner.GenerateMain.main(GenerateMain.zig:29)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)\n\tat java .base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base /java.lang.reflect.Method.invoke(Method.java:567)\n\tat io.quarkus.runner.bootstrap.StartupActionImpl$3.run(StartupActionImpl.java:134)\n\tat java.base/java. lang.Thread.run(Thread.java:831)\n"
知道缺少什么吗?
我有模型
@Entity
public class Nation extends PanacheEntity {
@Column
public String country;
public Nation(String country, List<State> states) {
this.country = …Run Code Online (Sandbox Code Playgroud) 这是How to pass a reactiveplot generated in Shiny to Rmarkdown to generateddynamic reports的后续问题
我试图将用户输入传递给textInput的filename参数downloadhandler。
这个概念通常有效,但在这种情况下,这段代码不起作用:
本质上我想改变
filename = "report.html",
到
filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),
这是代码:
library(shiny)
library(radarchart)
shinyApp(
ui = fluidPage(
sliderInput("slider", "Slider", 1, 100, 50),
textInput("text", "text"),
downloadButton("report", "Generate report")
),
server <- function(input, output) {
output$plot1 <- renderChartJSRadar({
chartJSRadar(skills[, c("Label", input$selectedPeople)],
maxScale = 10, showToolTipLabel=TRUE)
})
output$report <- downloadHandler(
#filename = "report.html",
filename = paste0("my_new_name", input$text,"-" ,Sys.Date(), ".html"),
content …Run Code Online (Sandbox Code Playgroud) 我们遇到了以下我们理解的行为,但是我们想知道它是否是预期的,以及将它记录为某种陷阱可能是有意义的.
我们正在试验Spring Boot 2/Spring WebFlux并设置一个基本上有这样的东西的小应用程序(全部缩短):
@PostMapping
public Mono<Todo> addTodos( @RequestBody Person person ) {
return personService.addPerson( person );
}
Run Code Online (Sandbox Code Playgroud)
该服务首先看起来像这样,因为我们想要将一个人的事件也发布到消息队列:
public class PersonService {
public Mono<Person> addPerson( Person person ) {
Mono<Person> addedPerson = personRepository.save( person );
addedPerson.subscribe( p -> rabbitTemplate.convertAndSend( "persons", p ) );
return addedPerson;
}
}
Run Code Online (Sandbox Code Playgroud)
所以,这样做显然是错误的.该.subscribe()触发器的流动和我们假设反应REST控制器确实在背景相同的序列化的数据的响应,从而导致第二平行流动之前.最后,我们最终persons在数据库中的集合中有两个重复的条目.
在这个冗长的介绍之后,最后的问题是:这是多个订阅者触发多个插入的预期行为(基本上,如果您订阅n时间,您会获得n插入)?
如果是的话,这对于初学者来说可能是一个陷阱,特别是如果我们的理解是正确的,那么反应式REST控制器就会发挥作用.subscribe().
spring spring-mvc spring-data-mongodb project-reactor reactive
我可以改善我的代码,并用array.map代替for-loop吗?
我搜索了一下,我想我可以这样做,但是我没有找到如何应用的方法。
这是我发现的:
var result = arr.map(person => ({ value: person.id, text: person.name }));
Run Code Online (Sandbox Code Playgroud)
我的代码在这里:
public getFlights(): Observable<RowItem[]> {
return this.http
.get(this.apiHostFlights)
.map((res: any) => {
return <LocationModelItem[]>res.json();
})
.map((items: LocationModelItem[]) => {
var rowItems: RowItem[]=[];
var cachedLenght = items.length;
for (var i = 0; i < cachedLenght; i++) {
rowItems.push(
new RowItem(i, items[i].name, items[i].img, items[i].category)
);
}
return rowItems;
})
.catch((error: any) => {
return Observable.throw(error.statusText);
});
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从远程源检索项目,如果这不起作用(没有互联网),我想从房间数据库中检索缓存的项目。我为发生错误时创建了一个新单曲,并指定了它应该订阅和观察的线程。我仍然是这个例外:
java.lang.IllegalStateException: Cannot access database on the main thread since it may potentially lock the UI for a long period of time.
Run Code Online (Sandbox Code Playgroud)
这是检索项目的方法:
public LiveData<List<Article>> getNewsArticles() {
return LiveDataReactiveStreams.fromPublisher(
newsService.getNewsArticles()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(throwable ->
Single.just(newsDao.findAllForNumber(AMOUNT_OF_ARTICLES_PER_PAGE))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnSuccess(newsArticles -> Completable.fromAction(() ->
newsDao.insertAll(newsArticles))
.subscribeOn(Schedulers.io()))
.toFlowable());
}
Run Code Online (Sandbox Code Playgroud)
LiveDataReactiveStreams 将其转换为 livedata 对象并处理订阅,所以我的视图只知道 livedata。
我似乎无法让 onErrorResumeNext 调用在后台线程上工作。
任何帮助将不胜感激!
回答
我最终用以下代码解决了这个问题:
public LiveData<List<Article>> getNewsArticles() {
return LiveDataReactiveStreams.fromPublisher(
newsService.getNewsArticles()
.observeOn(Schedulers.io())
.doOnSuccess(newsArticles -> newsDao.insertAll(newsArticles))
.onErrorResumeNext(throwable -> Single.fromCallable(() -> newsDao.findAllForNumber(AMOUNT_OF_ARTICLES_PER_PAGE)))
.toFlowable());
}
Run Code Online (Sandbox Code Playgroud) 考虑以下代码,我无法使activedata属性具有反应性。在这种情况下,我只想在图像上的鼠标悬停时显示div。
<template>
<div>
<img @mouseover="showInfo" class="cursor-pointer w-full" :src="project.images[0].url" width="100%">
<div v-show="active" class="bg-red h-12">
Info about the image
</div>
</div>
</template>
<script>
export default {
props: ['project'],
data: function () {
return {
active: false
}
},
methods: {
showInfo: () => {
this.active = !this.active;
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我尝试使用v-if代替和打印,active但没有效果。我究竟做错了什么?
我正在尝试在闪亮的应用程序中构建反应式条形图。我有一个名为 stats 的小表
Team wins loss draws
Arsenal 533 120 256
Chelsea 489 201 153
Liverpool 584 186 246
Run Code Online (Sandbox Code Playgroud)
我想构建一个条形图,根据所选团队显示胜利、失败和平局。我无法为此创建反应性条形图。有人可以为此建议一个代码或指导我正确的方向吗?
所有这些框架都在线程之上创建了另一个抽象级别。例如,由于调度的原因,使用 kotlin 协程似乎比纯线程需要更多的 CPU 周期。对于反应式,我们有同样的情况,额外的级别 - 更多的 CPU 周期。虽然我不知道 akka-actors。
即使使用更多的 CPU 周期来调度协程,我们仍然可以通过非阻塞方法获得性能提升。
有人可以详细解释这些收益(或者这是一种权衡吗?),重点关注硬件和操作系统级别?也许在什么情况下我们想要使用协程或reactivex,而当我们因为某些原因不想使用它们时?
当上游发出 nullValue 时,我们可以使用 'Mono.defualtIfEmpty()' 或 'Mono.switchIfEmpty()' 来替换 null 值。
但switchIfEmpty()评价上游价值急切。因此我们使用 Mono.defer() 进行惰性求值。
'Mono.defualtIfEmpty()' 也是急于求值吗?像 switchIfEmpty() 一样?
如何更改 Mono.defualtIfEmpty() 来进行惰性评估?
reactive-programming project-reactor reactive spring-webflux
我正在阅读raywenderlich的Rx-Reactive编程书籍,并对Rx Swift的这种语法感到困惑:
extension PHPhotoLibrary {
static var authorized: Observable<Bool> {
return Observable.create({ observer in
DispatchQueue.main.async {
if authorizationStatus() == .authorized {
observer.onNext(true)
observer.onCompleted()
} else {
observer.onNext(false)
requestAuthorization({ newStatus in
observer.onNext(newStatus == .authorized)
observer.onCompleted()
})
}
}
return Disposables.create()
})
}
}
Run Code Online (Sandbox Code Playgroud)
为什么代码中有两个return语句?有人可以解释一下为什么我们在代码中需要2个return语句吗?
所以..想象我有一个像这样的方法构造:
LocalDatabase:
public Observable<PoiObject> getPoiObject() {
return Observable.defer {
PoiObject object = poiDao.getPoiObject();
if(object == null) {
return Observable.empty();
}
else {
return Observable.just(object);
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我在其他地方有另一种方法,如下所示:
服务:
public Observable<PoiObject> getPoiObject() {
return localDatabase.getPoiObject()
}
public Observable<PoiObject> getItFromWeb() {
return restService.getObject()
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试将Service :: getPoiObject的调用链接到这样的Rx调用:
用例:
public Observable<SomeVM> getObject() {
return service.getPoiObject()
.switchIfEmpty(service.getItFromWeb())
}
Run Code Online (Sandbox Code Playgroud)
然后以下单元测试失败:
@Test
public void test_getObject() {
Service service = mock()
when(service.getPoiObject()).thenReturn(any());
Observable<SomeVM> observable = usecase.getObject();
verify(service).getPoiObject();
verify(service, times(0)).getItFromWeb();
}
Run Code Online (Sandbox Code Playgroud)
为什么getItFromWeb()在清楚地执行时,前一个调用不为空(从service.getPoiObject()调用返回对象).是否还有其他策略可以测试switchIfEmpty?