标签: reactive

何时在Android中使用RxJava以及何时使用Android Architectural Components中的LiveData?

我没有理由在Android中使用RxJava,在Android Architectural Components中使用LiveData.如果两者之间的用例和差异以及代码形式的示例示例进行解释,这将解释两者之间的差异,这将非常有用.

android rx-android reactive rx-java2 android-architecture-components

158
推荐指数
6
解决办法
4万
查看次数

如何在角4反应形式中找到无效控件

我在Angular中有一个反应形式,如下所示:

this.AddCustomerForm = this.formBuilder.group({
    Firstname: ['', Validators.required],
    Lastname: ['', Validators.required],
    Email: ['', Validators.required, Validators.pattern(this.EMAIL_REGEX)],
    Picture: [''],
    Username: ['', Validators.required],
    Password: ['', Validators.required],
    Address: ['', Validators.required],
    Postcode: ['', Validators.required],
    City: ['', Validators.required],
    Country: ['', Validators.required]
});

createCustomer(currentCustomer: Customer) 
{
    if (!this.AddCustomerForm.valid)
    {
        //some app logic
    }
}
Run Code Online (Sandbox Code Playgroud)

this.AddCustomerForm.valid返回false,但一切看起来都不错.

我试图通过检查控件集合中的status属性来查找.但我想知道是否有办法找到无效的并显示给用户?

reactive angular angular-reactive-forms

59
推荐指数
6
解决办法
4万
查看次数

相当于在 Swift Combine 中使用 @Published 的计算属性?

在命令式 Swift 中,通常使用计算属性来提供对数据的便捷访问,而无需复制状态。

假设我有这个类用于命令式 MVC 使用:

class ImperativeUserManager {
    private(set) var currentUser: User? {
        didSet {
            if oldValue != currentUser {
                NotificationCenter.default.post(name: NSNotification.Name("userStateDidChange"), object: nil)
                // Observers that receive this notification might then check either currentUser or userIsLoggedIn for the latest state
            }
        }
    }

    var userIsLoggedIn: Bool {
        currentUser != nil
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

如果我想使用Combine 创建一个反应式等效项,例如用于SwiftUI,我可以轻松添加@Published到存储的属性以生成Publishers,但不能用于计算属性。

    @Published var userIsLoggedIn: Bool { // Error: Property wrapper cannot be applied to a computed property
        currentUser != …
Run Code Online (Sandbox Code Playgroud)

ios swift reactive swiftui combine

55
推荐指数
3
解决办法
2万
查看次数

直接从 vue 3 设置获取的 props 不是响应式的

我正在 vuejs 中编写一个应用程序,我想将 prop 传递给子组件,但我收到此错误:

props从的根范围获取值setup()将导致该值失去反应性

父组件

<template>
  <div>
      <course-list :courseId = "id"  />
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)
import {useRoute} from 'vue-router';
import { ref, onMounted, reactive} from 'vue';
export default defineComponent({
  components: { NavBar, CourseList, CourseContent },
  props:{
    courseId: String
  },
  setup(){
      const route = useRoute()

      const id = route.params.id
      console.log("the course id is", id);

    return{
      id
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

子组件

export default defineComponent({
  components: { CourseTopic },
  props: {
      courseId: {
        type: String
      }
    },
  setup(props) { …
Run Code Online (Sandbox Code Playgroud)

vue.js reactive vue-props vuejs3

27
推荐指数
3
解决办法
6万
查看次数

当我们有阻塞调用时,我们应该使用像 spring webflux 这样的反应式堆栈 Web 框架吗?

我试图了解什么时候我们会使用像 webflux 这样的反应式堆栈框架。我读过的文章似乎表明,当我们有许多阻塞调用时,我们将从反应式方法中受益。例如,如果我们有一个 Webhook 服务,需要调用客户端服务器来更新信息。

但我也在这里阅读https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html

评估应用程序的一个简单方法是检查其依赖性。如果您要使用阻塞持久性 API(JPA、JDBC)或网络 API,那么 Spring MVC 至少是通用架构的最佳选择。使用 Reactor 和 RxJava 在单独的线程上执行阻塞调用在技术上是可行的,但您不会充分利用非阻塞 Web 堆栈。

这似乎表明恰恰相反。我读到,如果你可以流式传输信息,反应式会更有用。例如,如果您有一个前端要求一个列表和一个反应源,它可以在信息可用时为您提供信息,而不是在信息完成后仅提供全部信息。

那么问题是我们什么时候应该在后端使用响应式?当我们有很多阻塞调用时我们应该使用它吗?例如,对客户端的 HTTP 调用我们需要等待响应。或者这到底是错误的用例?

我知道还有其他考虑因素,例如代码的复杂性。我知道反应式方法更难实现,但我在这里只是询问性能和可扩展性。

reactive spring-webflux

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

ReactiveCrudRepository在春天使用Hibernate

是否可以使用Hibernate和Mysql ReactiveCrudRepository代替CrudRepository?我已经尝试过使用Spring Data Jpa和Hibernate的一些示例,但无法使其工作.我只能ReactiveCrudRepository为MongoDB和cassandra找到一些样本.

spring hibernate spring-data spring-data-jpa reactive

20
推荐指数
2
解决办法
1万
查看次数

如何检查Mono是否为空?

我正在使用WebFlux框架开发一个使用Spring Boot 2.0和Kotlin的应用程序.

我想在保存交易之前检查用户ID是否退出.我被困在一个简单的事情,如验证Mono是否为空.

fun createTransaction(serverRequest: ServerRequest) : Mono<ServerResponse> {
    val transaction = serverRequest.body(BodyExtractors.toMono(Transaction::class.java))

    transaction.flatMap {
        val user = userRepository.findById(it.userId)
        // If it's empty, return badRequest() 
    } 

    return transaction.flatMap { transactionRepository.save(it).then(created(URI.create("/transaction/" + it.id)).build()) }
}
Run Code Online (Sandbox Code Playgroud)

有可能做我想要的吗?

spring kotlin project-reactor reactive

17
推荐指数
3
解决办法
2万
查看次数

Vue更改数组中的对象并触发反应

如何在更改数组中索引找到的对象的一部分时触发更新?

文档展示了如何更改数组的值:

__CODE__ 要么 __CODE__

但是如何在不更改对象的其余部分的情况下更改数组中对象的属性值?

以下工作更新属性,但Vue不会对更改作出反应,直到其他内容触发更新.

__CODE__

vue.js reactive vuejs2

16
推荐指数
3
解决办法
2万
查看次数

将Spring Data的ReactiveCrudRepository应用于Redis

我正在玩Spring Boot 2 webflux.我正在尝试使用它ReactiveSortingRepository来简化redis操作.

public interface DataProfileRepository extends ReactiveSortingRepository<DataProfileDTO, String> {
}
Run Code Online (Sandbox Code Playgroud)

只需使用此界面即可

Mono<DataProfileDTO> tmp = this.dataProfileRepository.findById(id);
Run Code Online (Sandbox Code Playgroud)

例外:

org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [com.tradeshift.dgps.dto.DataProfileDTO] to type [reactor.core.publisher.Mono<?>]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:321) ~[spring-core-5.0.2.RELEASE.jar:5.0.2.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:194) ~[spring-core-5.0.2.RELEASE.jar:5.0.2.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:174) ~[spring-core-5.0.2.RELEASE.jar:5.0.2.RELEASE]
at org.springframework.data.repository.util.ReactiveWrapperConverters.toWrapper(ReactiveWrapperConverters.java:197) ~[spring-data-commons-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.data.repository.core.support.QueryExecutionResultHandler.postProcessInvocationResult(QueryExecutionResultHandler.java:104) ~[spring-data-commons-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:587) ~[spring-data-commons-2.0.2.RELEASE.jar:2.0.2.RELEASE]
Run Code Online (Sandbox Code Playgroud)

被扔了.

此存储库的行为与reactor不匹配,我可以在调试模式中看到,实际DataProfileDTO是从redis获取的.尝试时失败了:

GENERIC_CONVERSION_SERVICE.convert(reactiveObject, targetWrapperType);
Run Code Online (Sandbox Code Playgroud)

ReactiveWrapperConverters.toWrapper

我去谷歌搜索,似乎Spring Data Redis 2.0没有提到反应式存储库支持.我想知道我的代码或Spring Data Redis 2.0中是否有任何错误,我还不支持ReactiveCrudRepository.

spring-data-redis reactive

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

当我在响应正文中返回值时,Spring WebFlux 抛出“生产者”类型未知

我正在使用带有 Kotlin 的 Spring Boot,现在尝试通过传递响应式服务的处理程序来从 GET 宁静服务中获取状态值。

我可以看到我传递的处理程序在请求中,但是每当我构建主体时,我都会收到此异常:

java.lang.IllegalArgumentException: 'producer' type is unknown to ReactiveAdapterRegistry
    at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.2.0.RELEASE.jar:5.2.0.RELEASE]
    Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException
Run Code Online (Sandbox Code Playgroud)

这是我的代码

@Bean
    fun getReceiptConversionStatus() = router {
        accept(MediaType.APPLICATION_JSON).nest {
            GET("/BsGetStatus/{handler}", ::handleGetStatusRequest)
        }
    }
    private fun handleGetStatusRequest(serverRequest: ServerRequest): Mono<ServerResponse> = ServerResponse
            .ok()
            .contentType(MediaType.APPLICATION_JSON)
            .body(GetStatusViewmodel(fromObject(serverRequest.pathVariable("handler"))), GetStatusViewmodel::class.java)
            .switchIfEmpty(ServerResponse.notFound().build())
Run Code Online (Sandbox Code Playgroud)

这就是我的视图模型:

data class GetStatusViewmodel(
        @JsonProperty("handler") val documentHandler: String
)
Run Code Online (Sandbox Code Playgroud)

kotlin spring-boot reactive spring-webflux

14
推荐指数
2
解决办法
1万
查看次数