Giter VIP home page Giter VIP logo

Comments (2)

Nek-12 avatar Nek-12 commented on August 25, 2024

Hello, I believe that you are trying to solve a problem that does not exist here.
The MVIComposable does not expose State for a reason - we want it to recompose on state changes. I believe that behavior is normal.

Because that composable is only recomposed when the state changes, that's essentially equal to using derivedStateOf, isn't it?

What you probably wanted to do here is create some kind of computed property of a state that would be evaluated when the state is copied or created. In this case, it's far more efficient to make it a property of your MVIState itself, because state creation can be easily offloaded to background threads (unlike derivedStateOf { } computation).

Example:

 data class DisplayingSignInForm(
        val email: Input = empty(),
        val password: Input = empty(),
        val isPasswordVisible: Boolean = false,
    ) : EmailSignInState {
    
        // evaluated every time
        val isInputValid get() = email.isValid && password.isValid
        // evaluated when state is created ✅
        // works because state is immutable
        val isInputValid = email.isValid && password.isValid

Does this solve your problem?

from flowmvi.

OKatrych avatar OKatrych commented on August 25, 2024

Makes sense, sorry for the late reply.

from flowmvi.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.