Create enabledAndNotLoading state and don't set enabled in parameter #13890
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
First time contributor checklist
Contributor checklist
Fixes #1234
syntaxDescription
An important thing to note here is,
NEVER set a param default value to another parameter(If they are interdependent).
This can lead to unexpected behavior from the call site.
For example in this case:
If the TabRow is also dependent on any other condition to enable the Toggle, and it is set to true at the call site. Then the default value of
enabled = !isLoading
will be overridden to always true, which leads to inconsistent enabled state behavior for all elements.So, a better way is to keep the default values in params as it is, and then abstract out the logic for handling the "interdependent" states as I did here with
enabledAndNotLoading
. And now the component's developer is assured to have the states consistent.Let's make sure other places are also following the same pattern.