title: Why needn't the author to wrap text.isNotBlank() with remember?
body: <p>The Code A is from the official Sample project <a href="https://developer.android.com/codelabs/jetpack-compose-state#6" rel="nofollow noreferrer">here</a>.</p>
  <p>1: I think I can wrap <code>text.isNotBlank()</code> with<code>remember</code>, so I think Code B is good, right?</p>
  <p>BTW, I know the system will re-calculate when the <code>text</code> ( <code>val (text, setText) = remember { mutableStateOf(&quot;&quot;) }</code> ) is changed. So</p>
  <p>2: In Code B,  <code>val (icon, setIcon) = remember { mutableStateOf(TodoIcon.Default)}</code> and  <code>val iconsVisible = remember {text.isNotBlank() }</code> will be re-launched when the text is changed (<code>val (text, setText) = remember { mutableStateOf(&quot;&quot;) }</code>) , right?</p>
  <p><strong>Code A</strong></p>
  <pre><code>@Composable
  fun TodoItemInput(onItemComplete: (TodoItem) -&gt; Unit) {
     val (text, setText) = remember { mutableStateOf(&quot;&quot;) }
     val (icon, setIcon) = remember { mutableStateOf(TodoIcon.Default)}
     val iconsVisible = text.isNotBlank()
     Column {
         Row( /* ... */ ) {
             /* ... */
         }
         if (iconsVisible) {
             AnimatedIconRow(icon, setIcon, Modifier.padding(top = 8.dp))
         } else {
             Spacer(modifier = Modifier.height(16.dp))
         }
     }
  }
  </code></pre>
  <p><strong>Code B</strong></p>
  <pre><code>@Composable
  fun TodoItemInput(onItemComplete: (TodoItem) -&gt; Unit) {
     val (text, setText) = remember { mutableStateOf(&quot;&quot;) }
     val (icon, setIcon) = remember { mutableStateOf(TodoIcon.Default)}
     val iconsVisible = remember {text.isNotBlank() } //I add  remember 
     Column {
         ...
     }
  }
  </code></pre>