Comments (2)
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.
Makes sense, sorry for the late reply.
from flowmvi.
Related Issues (20)
- LocalKoinScope crash in ComposeScreen HOT 1
- State doesn't update from Store HOT 6
- Typo in the README.md file HOT 1
- `updateState` & `withState` with state inside receiver potentially leads to overlooking the problems
- [🚀] DSL For Lazy plugins with access to the store.
- [🚀] Debugger Enhancements & Fixes
- [🚀] Implement Time Travel for Debugger
- [🚀] Try Okio's deflater sink for compression instead of custom Gzip Stream. HOT 1
- [🐞] Time Travel plugin is not thread-safe when mutating collections.
- [🚀] Extensions for Undo/Redo to get intermediate data about the queue
- [❔] Add docs on Testing, State Management, Prebuilt Plugins
- [🚀] Try to add verification when store was not launched but was attempted to be used
- [❔] Why remove the return value of withState? HOT 2
- [🚀] Create a new multiplatform sample app
- [🐞] `serializeState` crashes on Wasm
- [🚀] Support Compose 1.6.10's Lifecycle
- [🚀] [Help wanted] Design a universal subscription lifecycle API
- [🚀] Add Koin Integration HOT 3
- Sweep: Add new getters to JobManager class that provide access to currently active jobs and whether job map is empty HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flowmvi.