{"id":45623,"date":"2021-11-14T12:53:03","date_gmt":"2021-11-14T03:53:03","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=45623"},"modified":"2021-11-14T12:53:03","modified_gmt":"2021-11-14T03:53:03","slug":"using-state-in-jetpack-compose-%ec%bb%b4%ed%8f%ac%ec%a6%88-%ea%b7%b8%eb%a6%ac%ea%b3%a0-viewmodel","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=45623","title":{"rendered":"Using state in Jetpack Compose &#8211; \ucef4\ud3ec\uc988 \uadf8\ub9ac\uace0 ViewModel"},"content":{"rendered":"\n<p>\uc9c0\ub09c \uc139\uc158\uc5d0\uc11c <em>ViewModel<\/em>\uacfc <em>LiveData<\/em>\ub97c \uc0ac\uc6a9\ud558\ub294 \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uc558\ub2e4. \uc774\uc81c\ub294 \ucef4\ud3ec\uc988\ub85c \uc62e\uaca8\uac00\uc11c \uc5b4\ub5bb\uac8c \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc744 \ucef4\ud3ec\uc988\uc5d0\uc11c <em>ViewModel<\/em>\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uc790.<\/p>\n\n\n\n<p>\uc774\uc804 \uc139\uc158\uc744 \b\uc77d\uc9c0 \uc54a\uc740 \uc0ac\ub78c\uc744 \uc704\ud574, \ub2e4\uc2dc \ud55c\ubc88 \uc544\ub798\uc758 3\uac00\uc9c0 \uc6a9\uc5b4\uc5d0 \ub300\ud574\uc11c \uc9da\uace0 \ub118\uc5b4\uac00\uc790.<\/p>\n\n\n\n<ul><li><strong>State<\/strong> &#8211; \uc2dc\uac04\uc5d0 \ub530\ub77c \ubcc0\uacbd \ub420 \uc218 \uc788\ub294 \uc5b4\ub5a4 \uac12<\/li><li><strong>Event<\/strong> &#8211; \ud504\ub85c\uadf8\ub7a8 \uc77c\ubd80\uc5d0 \ubb34\uc2a8 \uc77c\uc774 \uc0dd\uae34 \uac83\uc744 \uc54c\ub9b0\ub2e4.<\/li><li><strong>\ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984(Unidirectional data flow)<\/strong> &#8211; \uc774\ubca4\ud2b8\ub294 \uc704\ub85c state\ub294 \uc544\ub798\ub85c \ud750\ub974\ub294 \uc124\uacc4<\/li><\/ul>\n\n\n\n<p>\uc774 \uc139\uc158 \ub9c8\uc9c0\ub9c9\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc740 \ud654\uba74\uc744 \ub9cc\ub4e4\uac8c \ub420 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70.png\" alt=\"\" class=\"wp-image-45624\" width=\"479\" height=\"605\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70.png 638w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70-237x300.png 237w\" sizes=\"(max-width: 479px) 100vw, 479px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">TodoScreen \ucef4\ud3ec\uc800\ube14 \uc0b4\ud3b4\ubcf4\uae30<\/h2>\n\n\n\n<p>\ub2e4\uc6b4\ub85c\ub4dc\ud55c \ucf54\ub4dc\ub294 \uc774 \ucf54\ub4dc\ub7a9\uc744 \ud1b5\ud574 \uc0ac\uc6a9\ud558\uace0, \uc218\uc815\ud560 \uba87\uac00\uc9c0 \ucef4\ud3ec\uc800\ube14\uc744 \ud3ec\ud568\ud55c\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>\ub2e4\uc6b4\ub85c\ub4dc\ud55c \ud504\ub85c\uc81d\ud2b8\uc758 \ucef4\ud3ec\uc800\ube14\ub4e4\uc740 \ub450\uac1c\uc758 \ud30c\uc77c\ub85c \ub098\ub220\uc838 \uc788\ub2e4. <\/p><p><strong>  &#8211; TodoScreen.Kt<\/strong> : \uc774 \ucef4\ud3ec\uc800\ube14\ub4e4\uc740 \uc9c1\uc811\uc801\uc73c\ub85c state\uc640 \uc0c1\ud638\uc791\uc6a9\ud558\uace0, \uc6b0\ub9ac\ub294 \ucef4\ud3ec\uc988\uc5d0\uc11c state\ub97c \uc0b4\ud3b4\ubcf4\ubbc0\ub85c \uc774 \ud30c\uc77c\uc744 \uc218\uc815 \ud560 \uac83\uc774\ub2e4.<\/p><p> <strong> -TodoComponents.kt<\/strong> : \uc774 \ucef4\ud3ec\uc800\ube14\ub4e4\uc740 \uc7ac\uc0ac\uc6a9\uac00\ub2a5\ud55c \uba87\uac00\uc9c0 UI\ub4e4\uc744 \uc815\uc758\ud55c\ub2e4. \uc774 UI\ub4e4\uc740 \uc6b0\ub9ac\uac00 TodoScreen\uc744 \ub9cc\ub4dc\ub294\ub370 \uc0ac\uc6a9\ud55c\ub2e4. \uc774 \ucf54\ub4dc\ub7a9\uc5d0\uc11c \uc774 \ucef4\ud3ec\uc800\ube14\ub4e4\uc744 \uc218\uc815\ud560 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p><p> state\uc0c1\uc5d0\uc11c TodoScreen.kt\uc758 \ucf54\ub4dc\uc5d0 \uc9d1\uc911\ud558\uae30 \uc704\ud574 \uc784\uc758\ub85c \uc774\ub7ec\ud55c \ucf54\ub4dc \ubd84\ub9ac\ub97c \ud588\ub2e4. \uc2e4\uc804\uc5d0\uc11c \uc774\ub7ec\ud55c \ucef4\ud3ec\uc800\ube14\ub4e4\uc740 \uac19\uc740 \ud30c\uc77c\uc5d0\uc11c \uad00\ub9ac\ub418\uac70\ub098 \uc5ec\ub7ec \ud30c\uc77c\ub4e4\uc5d0 \uc758\uc874\ud558\uc5ec \uc0ac\uc6a9\ub418\uae30\ub3c4 \ud55c\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>To<em>doScreen.kt<\/em>\uc744 \uc5f4\uace0 \ub0b4\ubd80\uc5d0 \uc788\ub294 \ucef4\ud3ec\uc800\ube14\ub4e4\uc744 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">TodoScreen.kt<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>@Composable<br>fun TodoScreen(<br>&nbsp; &nbsp;items: List&lt;TodoItem&gt;,<br>&nbsp; &nbsp;onAddItem: (TodoItem) -&gt; Unit,<br>&nbsp; &nbsp;onRemoveItem: (TodoItem) -&gt; Unit<br>) {<br>&nbsp; &nbsp;\/* ... *\/<br>}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>\uc9c0\uae08 \ub2f9\uc7a5\uc740, \uc571\uc744 \uc2e4\ud589\ud574\ub3c4 \uc544\ubb34\uac83\ub3c4 \ub098\ud0c0\ub098\uc9c0 \uc54a\ub294\ub2e4.<\/p><p>\uc774 \uc139\uc158 \uc774\ud6c4\uc5d0, \uc6b0\ub9ac\uac00 TodoActivity\ub85c\ubd80\ud130 TodoScreen\uc744 \ud638\ucd9c\ud558\ub294 \ucf54\ub4dc\ub97c \uc791\uc131\ud558\ub3c4\ub85d \ud558\uc790.<\/p><\/blockquote>\n\n\n\n<p>\uc774 \ucef4\ud3ec\uc800\ube14\uc774 \ubb34\uc5c7\uc744 \ub098\ud0c0\ub0b4\ub824\ub294\uc9c0 \ubcf4\ub824\uba74, \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc5d0 \uc788\ub294 preview pane\uc744 \uc0ac\uc6a9\ud558\uc790. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-90a15e40ba2b514f.png\" alt=\"\" class=\"wp-image-45625\" width=\"228\" height=\"370\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-90a15e40ba2b514f.png 456w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-90a15e40ba2b514f-185x300.png 185w\" sizes=\"(max-width: 228px) 100vw, 228px\" \/><\/figure>\n\n\n\n<p>\uc774 \ucef4\ud3ec\uc800\ube14\uc740 \uc218\uc815\ud560 \uc218 \uc788\ub294 TODO \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc900\ub2e4. \ud558\uc9c0\ub9cc \uc774 \ubaa9\ub85d\uc740 \uc5b4\ub5a4 state\ub3c4 \uac16\uace0 \uc788\uc9c0 \uc54a\ub294\ub2e4. \uba85\uc2ec\ud574\uc57c \ud560 \uac83\uc740 state\ub294 \ubcc0\uacbd\ud560 \uc218 \uc788\ub294 \uc5b4\ub5a4 \uac12\uc774\ub2e4. \ud558\uc9c0\ub9cc <em>TodoScreen<\/em>\uc5d0 \uc788\ub294 \uc5b4\ub5a0\ud55c \uc778\uc790\ub3c4 \uc218\uc815\ub420 \uc218\uac00 \uc5c6\ub2e4.<\/p>\n\n\n\n<ul><li><strong>items<\/strong> &#8211; \ud654\uba74\uc5d0 \ub098\ud0c0\ub0b4\ub294 \ubcc0\uacbd\ud560 \uc218 \uc5c6\ub294 \uc544\uc774\ud15c \ubaa9\ub85d<\/li><li><strong>onAddItem<\/strong> &#8211; \uc0ac\uc6a9\uc790\uc758 \uc694\uccad\uc5d0 \uc758\ud574 \uc544\uc774\ud15c\uc774 \ucd94\uac00 \ub420 \ub54c \ubc1c\uc0dd\ud558\ub294 event<\/li><li><strong>onRemoveItem<\/strong> &#8211; \uc0ac\uc6a9\uc790\uc758 \uc694\uccad\uc5d0 \uc758\ud574 \uc544\uc774\ud15c\uc774 \uc81c\uac70 \ub420 \ub54c \ubc1c\uc0dd\ud558\ub294 event<\/li><\/ul>\n\n\n\n<p>\uc0ac\uc2e4\uc740 \uc774 \ucef4\ud3ec\uc800\ube14\uc740 <strong>stateless<\/strong>(\uc0c1\ud0dc\ub97c \uc720\uc9c0\ud558\uc9c0 \uc54a\ub294)\ub2e4. \uc804\ub2ec\ub41c \uc544\uc774\ud15c \ubaa9\ub85d\ub9cc \ud45c\uc2dc\ud558\uace0, \ubaa9\ub85d\uc744 \uc9c1\uc811 \uc218\uc815\ud560 \uc218\uac00 \uc5c6\ub2e4. \ub300\uc2e0\uc5d0, \ubcc0\uacbd\uc744 \uc694\uccad\ud560 \uc218 \uc788\ub294 \ub450 \uac00\uc9c0 event\uc778 <em>onRemoveItem<\/em> \ubc0f <em>onAddItem<\/em>\uc774 \uc804\ub2ec\ub41c\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><strong>stateless \ucef4\ud3ec\uc800\ube14<\/strong>\uc740 \uc5b4\ub5a0\ud55c state\ub3c4 \uc9c1\uc811\uc801\uc73c\ub85c \ubcc0\uacbd\ud560 \uc218 \uc5c6\ub294 \ucef4\ud3ec\uc800\ube14\uc744 \ub9d0\ud55c\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>\uc544\ub9c8 \uc774\ucbe4\ub418\uba74 \ud55c\uac00\uc9c0 \uad81\uae08\ud55c \uc810\uc774 \uc0dd\uae38 \uac83\uc774\ub2e4. \ub9cc\uc57d stateless\ub77c\uba74 \uc5b4\ub5bb\uac8c \uc218\uc815\uac00\ub2a5\ud55c \ubaa9\ub85d\uc744 \ud654\uba74\uc5d0 \ub098\ud0c0\ub0bc\uae4c? \uadf8\uac74 \ubc14\ub85c <strong>state hoisting<\/strong>\uc774\ub77c\ub294 \uae30\uc220\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774\ub2e4. <a href=\"https:\/\/www.charlezz.com\/?p=45490\"><strong>State hoisting(\uc0c1\ud0dc \ub04c\uc5b4\uc62c\ub9ac\uae30)<\/strong><\/a>\ub294 \uc5b4\ub5a4 \ucef4\ud3ec\ub10c\ud2b8\ub97c <strong>stateless<\/strong>\ud558\uac8c \ub9cc\ub4e4\uae30 \uc704\ud574 state\ub97c \uc704\ub85c \uc62c\ub9ac\ub294 \ud328\ud134\uc744 \uc758\ubbf8\ud55c\ub2e4. <strong>stateless<\/strong>\ud55c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc740 \ud14c\uc2a4\ud2b8 \ud558\uae30 \uc27d\uace0, \ubc84\uadf8\uac00 \uc801\uac8c \ubc1c\uc0dd\ud558\ub294 \uacbd\ud5a5\uc774 \uc788\uc73c\uba70, \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\uc5ec\uc900\ub2e4.<\/p>\n\n\n\n<p>stateless\ub294 \ud638\ucd9c\uc790\uac00 \ucef4\ud3ec\uc800\ube14 \ubc16\uc73c\ub85c state\ub97c \ub04c\uc5b4\uc62c\ub9b4 \uc218 \uc788\ub3c4\ub85d \ud558\uae30 \uc704\ud574 \uba87\uac00\uc9c0 \ub9e4\uac1c\ubcc0\uc218\uc758 \uc870\ud569\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \uc774\uac8c \uc5b4\ub5bb\uac8c \ub3d9\uc791\ud558\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\ub824\uba74, \uc774\uc804 \uc139\uc158\uc758 composable\uc758 <a href=\"https:\/\/www.charlezz.com\/?p=45616\">UI \uc5c5\ub370\uc774\ud2b8 \uc21c\ud658<\/a>\uc744 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n\n\n\n<ul><li><strong>Event<\/strong> &#8211; \uc0ac\uc6a9\uc790\uac00 \uc544\uc774\ud15c\uc744 \ucd94\uac00 \ub610\ub294 \uc0ad\uc81c \uc694\uccad\ud560 \ub54c, TodoScreen\uc5d0\uc11c\ub294 onAddItem \ub610\ub294 onRemoveItem\uc744 \ud638\ucd9c \ud55c\ub2e4.<\/li><li><strong>Update state<\/strong> &#8211; TodoScreen\uc758 \ud638\ucd9c\uc790\ub294 state\ub97c \uc5c5\ub370\uc774\ud2b8 \ud558\ub294 \uac83\uc73c\ub85c \uc774\ub7ec\ud55c \uc774\ubca4\ud2b8\uc5d0 \ubc18\uc751\ud55c\ub2e4.<\/li><li><strong>Display state<\/strong> &#8211; state\uac00 \uc5c5\ub370\uc774\ud2b8 \ub420 \ub54c, TodoScreen\uc774 \uc0c8\ub85c\uc6b4 \ud56d\ubaa9\uacfc \ud568\uaed8 \ub2e4\uc2dc \ud638\ucd9c\ub418\uace0, \uadf8\uac83\ub4e4\uc744 \ud654\uba74\uc5d0 \ub098\ud0c0\ub0b8\ub2e4.<\/li><\/ul>\n\n\n\n<p>\ud638\ucd9c\uc790\ub294 state\ub97c \uc5b4\ub5bb\uac8c \uad00\ub9ac\ud558\uace0, \uadf8\ub9ac\uace0 \uc5b4\ub514\uc5d0 \uad00\ub9ac\ud574\uc57c \ud558\ub294\uc9c0\uc5d0 \ub300\ud55c \ucc45\uc784\uc774 \uc788\ub2e4. \uc608\ub97c\ub4e4\uc5b4 \ud638\ucd9c\uc790\ub294 \uba54\ubaa8\ub9ac \ub610\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc800\uc7a5\ud558\uace0 \ubd88\ub7ec\uc62c \uc218 \uc788\ub2e4. TodoScreen\uc740 state\uac00 \uc5b4\ub5bb\uac8c \uad00\ub9ac\ub418\ub290\ub0d0\ub77c\ub294 \ubd80\ubd84\uc5d0\uc11c\ub294 \uc644\ubcbd\ud788 \ubd84\ub9ac\ub418\uc5b4\uc788\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>State hoisting\uc740 \ucef4\ud3ec\ub10c\ud2b8\ub97c stateless\ud558\uac8c \ub9cc\ub4e4\uae30 \uc704\ud574 state\ub97c \uc704\ub85c \uc62e\uae30\ub294 \ud328\ud134\uc774\ub2e4.<\/p><p>\ucef4\ud3ec\uc800\ube14\uc5d0 \uc774\ub97c \uc801\uc6a9\ud560 \ub54c, \ub450\uac1c\uc758 \ub9e4\uac1c\ubcc0\uc218\ub97c \ucef4\ud3ec\uc800\ube14\uc5d0 \ub3c4\uc785\ud55c\ub2e4.<\/p><p><strong>  \u00b7 value:T <\/strong>&#8211; \ubcf4\uc5ec\uc8fc\uae30 \uc704\ud55c <em>\ud604\uc7ac<\/em> \uac12<\/p><p><strong>  \u00b7 onValueChange:(T) -> Unit <\/strong>&#8211; \uac12\uc744 \ubcc0\uacbd\ud558\uae30 \uc704\ud574 \uc694\uccad\ud558\ub294 \uc774\ubca4\ud2b8, \uc5ec\uae30\uc11c T\ub294 \uc81c\uc548\ub41c \uc0c8\ub85c\uc6b4 \uac12<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\"> TodoActivityScreen \ucef4\ud3ec\uc800\ube14 \uc815\uc758\ud558\uae30<\/h2>\n\n\n\n<p><em>TodoViewModel.kt<\/em>\ub97c \uc5f4\uace0 state \ubcc0\uc218 \ud558\ub098\ub791 \uc774\ubca4\ud2b8 \ub450\uac1c\ub97c \uc120\uc5b8\ud558\uace0 \uc788\ub294 \uae30\uc874 <em>ViewModel<\/em>\uc744 \ucc3e\uc544\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class TodoViewModel : ViewModel() {<br><br>&nbsp; &nbsp;\/\/ state: todoItems<br>&nbsp; &nbsp;private var _todoItems = MutableLiveData(listOf&lt;TodoItem&gt;())<br>&nbsp; &nbsp;val todoItems: LiveData&lt;List&lt;TodoItem&gt;&gt; = _todoItems<br><br>&nbsp; &nbsp;\/\/ event: addItem<br>&nbsp; &nbsp;fun addItem(item: TodoItem) {<br>&nbsp; &nbsp; &nbsp; &nbsp; \/* ... *\/<br>&nbsp; &nbsp;}<br><br>&nbsp; &nbsp;\/\/ event: removeItem<br>&nbsp; &nbsp;fun removeItem(item: TodoItem) {<br>&nbsp; &nbsp; &nbsp; &nbsp; \/* ... *\/<br>&nbsp; &nbsp;}<br>}<\/code><\/pre>\n\n\n\n<p><em>TodoScreen<\/em>\uc5d0\uc11c state\ub97c \ub04c\uc5b4\uc62c\ub9ac\uae30 \uc704\ud574 \uc774 <em>ViewModel<\/em>\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \ub05d\ub0a0 \ub54c, \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984 \uc124\uacc4\uac00 \ub2e4\uc74c\uacfc \uac19\uc774 \ub9cc\ub4e4\uc5b4\uc838 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"461\" height=\"498\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-58baca1f648c1a64.png\" alt=\"\" class=\"wp-image-45627\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-58baca1f648c1a64.png 461w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-58baca1f648c1a64-278x300.png 278w\" sizes=\"(max-width: 461px) 100vw, 461px\" \/><\/figure>\n\n\n\n<p><em>TodoActivity.kt<\/em>\ub97c \uc5f4\uace0 <em>TodoScreen<\/em>\uc744 <em>TodoActivity<\/em> \ub0b4\uc5d0 \ud1b5\ud569\ud558\ub294 \uac83\uc73c\ub85c \uc2dc\uc791\ud55c\ub2e4. \uadf8\ub9ac\uace0 \uc0c8\ub85c\uc6b4 <em>@Composable \ud568\uc218<\/em>\uc778 <em>TodoActivityScreen(todoViewModel:TodoViewModel)<\/em>\uc744 \uc815\uc758\ud558\uace0 <em>onCreate<\/em>\uc758 <em>setContent<\/em>\uc5d0\uc11c \uc774\ub97c \ud638\ucd9c\ud558\ub3c4\ub85d \ud558\uc790.<\/p>\n\n\n\n<p>\uc774 \uc139\uc158\uc758 \ub098\uba38\uc9c0\uc5d0\uc11c\ub294 \ud55c\ubc88\uc5d0 \ud558\ub098\uc529 <em>TodoActivityScreen<\/em>\uc744 \ub9cc\ub4e4\uc5b4 \ubcf4\ub3c4\ub85d \ud558\uc790. \uc544\ub798\uc5d0 \ub098\uc62c \uac00\uc9dc state \ubc0f event\ub4e4\uacfc \ud568\uaed8 TodoScreen\uc744 \ud638\ucd9c\ud574\ubcf4\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class TodoActivity : AppCompatActivity() {\n\n\u00a0 \u00a0private val todoViewModel by viewModels&lt;TodoViewModel>()\n\n\u00a0 \u00a0override fun onCreate(savedInstanceState: Bundle?) {\n\u00a0 \u00a0 \u00a0 \u00a0super.onCreate(savedInstanceState)\n\u00a0 \u00a0 \u00a0 \u00a0setContent {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0StateCodelabTheme {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Surface {\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0TodoActivityScreen(todoViewModel)\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}\n\u00a0 \u00a0 \u00a0 \u00a0}\n\u00a0 \u00a0}\n}\n\n@Composable\nprivate fun TodoActivityScreen(todoViewModel: TodoViewModel) {\n\u00a0 \u00a0val items = listOf&lt;TodoItem>() \/\/ <meta charset=\"utf-8\">\ub2e4\uc74c \ub2e8\uacc4\uc5d0\uc11c \uc774\ub97c \uc644\uc131\uc2dc\ud0a4\uc790!\n\u00a0 \u00a0TodoScreen(\n\u00a0 \u00a0 \u00a0 \u00a0items = items,\n\u00a0 \u00a0 \u00a0 \u00a0onAddItem = { }, \/\/ \ub2e4\uc74c \ub2e8\uacc4\uc5d0\uc11c \uc774\ub97c \uc644\uc131\uc2dc\ud0a4\uc790!\n\u00a0 \u00a0 \u00a0 \u00a0onRemoveItem = { } \/\/ <meta charset=\"utf-8\">\ub2e4\uc74c \ub2e8\uacc4\uc5d0\uc11c \uc774\ub97c \uc644\uc131\uc2dc\ud0a4\uc790!\n\u00a0 \u00a0)\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><strong>StateCodelabTheme \uacfc Surface\ub780 \ubb34\uc5c7\uc778\uac00?<\/strong><\/p><p>\ucef4\ud3ec\uc988 \ud504\ub85c\uc81d\ud2b8\ub85c \uc2dc\uc791\ud560 \ub54c \uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624\uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c \uc0dd\uc131\ud574\uc8fc\ub294 \ud14c\ub9c8\ub2e4. \ucef4\ud3ec\uc988\uc5d0\uc11c \ud14c\ub9c8\ub97c \ub2e4\ub8e8\ub294 \ubc95\uc5d0 \ub300\ud574\uc11c \ub354 \ub9ce\uc740 \uc815\ubcf4\ub97c \uc54c\uace0 \uc2f6\ub2e4\uba74, <a href=\"https:\/\/developer.android.com\/jetpack\/compose\/themes?hl=ko\">\ucef4\ud3ec\uc988\uc758 \ud14c\ub9c8 \uc124\uc815<\/a>\uc744 \ud655\uc778\ud558\uc790.<\/p><p>Surface\ub294 \uc571\uc5d0 \ubc30\uacbd\uc744 \ucd94\uac00\ud558\uace0 \ud14d\uc2a4\ud2b8 \uc0c9\uc0c1\uc744 \uc124\uc815\ud55c\ub2e4.<\/p><\/blockquote>\n\n\n\n<p><em>TodoActivityScreen<\/em> \ucef4\ud3ec\uc800\ube14\uc740 ViewModel\uc5d0\uc11c \uc800\uc7a5\ub41c state \ubc0f \ud504\ub85c\uc81d\ud2b8\uc5d0 \uc774\ubbf8 \uc815\uc758\ub41c <em>TodoScreen<\/em> \ucef4\ud3ec\uc800\ube14 \uc0ac\uc774\ub97c \uc774\uc5b4\uc8fc\ub294 \ub2e4\ub9ac \uc5ed\ud560\uc744 \ud55c\ub2e4. ViewModel\uc744 \uc9c1\uc811\uc801\uc778 \uc778\uc790\ub85c \uac16\ub294 <em>TodoScreen<\/em> \ud568\uc218\ub85c \ubcc0\uacbd\ud560 \uc218\ub3c4 \uc788\ub2e4. \ud558\uc9c0\ub9cc \uadf8\ub807\uac8c \ub418\uba74, <em>TodoScreen<\/em>\uc758 \uc7ac\uc0ac\uc6a9\uc131\uc774 \ub5a8\uc5b4\uc9c0\uac8c \ub41c\ub2e4. List&lt;TodoItem>\uacfc \uac19\uc740 \ub2e8\uc21c\ud55c \ub9e4\uac1c\ubcc0\uc218\ub97c \uc0ac\uc6a9\ud558\uba74, state\uac00 \ub04c\uc5b4\uc62c\ub824\uc9c4 \ud2b9\uc815\ud55c \uacf3\uc5d0 <em>TodoScreen<\/em>\uc774 \uacb0\ud569\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p>\ub9cc\uc57d app\uc744 \uc989\uc2dc \uc2e4\ud589\ud558\uba74, \ubc84\ud2bc \ud558\ub098\ub97c \ubcfc\uc218 \uc788\uac8c \ub418\uc9c0\ub9cc \ud074\ub9ad\uc740 \uc544\ubb34 \ub3d9\uc791\uc744 \ud558\uc9c0 \uc54a\ub294\ub2e4. \uc65c\ub0d0\uba74 \uc544\uc9c1 ViewModel\uc744 <em>TodoScreen<\/em>\uc5d0 \uc5f0\uacb0\ud558\uc9c0 \uc54a\uc558\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-ebb21b54a46d8449.png\" alt=\"\" class=\"wp-image-45628\" width=\"410\" height=\"517\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-ebb21b54a46d8449.png 547w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-ebb21b54a46d8449-238x300.png 238w\" sizes=\"(max-width: 410px) 100vw, 410px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Event \uc62c\ub9ac\uae30<\/h2>\n\n\n\n<p>\uc774\uc81c ViewModel, \ub2e4\ub9ac \uc5ed\ud560\uc744 \ud558\ub294 TodoActivityScreen \ucef4\ud3ec\uc800\ube14 \ubc0f TodoScreen, \uc6b0\ub9ac\uac00 \ud544\uc694\ub85c \ud558\ub294 \ubaa8\ub4e0 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc900\ube44\ud588\ub2e4. \ubaa8\ub4e0 \uac83\ub4e4\uc744 \uc5ee\uace0 \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc744 \uc0ac\uc6a9\ud574\uc11c \ub3d9\uc801\uc778 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub3c4\ub85d \ud558\uc790.<\/p>\n\n\n\n<p>TodoActivityScreen\uc5d0\uc11c addItem \ubc0f removeItem\uc744 ViewModel\ub85c \ubd80\ud130 \uc804\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>\/\/ TodoActivity.kt<\/strong>\n@Composable\nprivate fun TodoActivityScreen(todoViewModel: TodoViewModel) {\n\u00a0 \u00a0val items = listOf&lt;TodoItem>()\n\u00a0 \u00a0TodoScreen(\n\u00a0 \u00a0 \u00a0 \u00a0items = items,\n\u00a0 \u00a0 \u00a0 \u00a0onAddItem = { todoViewModel.addItem(it) },\n\u00a0 \u00a0 \u00a0 \u00a0onRemoveItem = { todoViewModel.removeItem(it) }\n\u00a0 \u00a0)\n}<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>TodoScreen\uc5d0 \uc804\ub2ec\ub41c event\ub294 \ucf54\ud2c0\ub9b0 \ub78c\ub2e4 \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud55c\ub2e4. \ucf54\ud2c0\ub9b0\uc758 \ub78c\ub2e4\uc5d0 \ub300\ud574\uc11c \ub354 \ub9ce\uc774 \uc54c\uace0 \uc2f6\ub2e4\uba74, \ucf54\ud2c0\ub9b0 <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/lambdas.html\">\ubb38\uc11c<\/a>\ub97c \ud655\uc778\ud558\uc790.<\/p><\/blockquote>\n\n\n\n<p><em>TodoScreen<\/em>\uc774 <em>onAddItem<\/em> \ub610\ub294 <em>onRemoveItem<\/em>\uc744 \ud638\ucd9c \ud560 \ub54c, \uc6b0\ub9ac\ub294 \uc774 \ud638\ucd9c\uc744 <em>ViewModel<\/em> \uc0c1\uc5d0 \uc62c\ubc14\ub978 event\ub85c \uc804\ub2ec\ud560 \uc218 \uc788\ub2e4. <\/p>\n\n\n\n<blockquote class=\"wp-block-quote\"><p><strong>\ucf54\ud2c0\ub9b0 \uae68\uc54c \uc815\ubcf4<\/strong><\/p><p>\uba54\uc11c\ub4dc \ucc38\uc870 \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud558\ub294 \ub2e8\uc77c \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uc5ec \ub78c\ub2e4\ub97c \uc0dd\uc131\ud560\uc218\ub3c4 \uc788\ub2e4. \uc774\ub294 \uba54\uc11c\ub4dc \ud638\ucd9c \ubc14\uae65\uc5d0\uc11c \ub78c\ub2e4\ub97c \uc0dd\uc131\ud55c\ub2e4. \uc704\uc5d0\uc11c \uba54\uc11c\ub4dc \ucc38\uc870 \ubb38\ubc95\uc744 \uc0ac\uc6a9\ud558\ub294 <strong>onAddItem<\/strong>\uc740 <strong><span class=\"highlight\">onAddItem = todoViewModel::addItem<\/span><\/strong>\uc73c\ub85c\ub3c4 \ud45c\ud604\ud560\uc218 \uc788\ub2e4.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">State\ub97c \uc544\ub798\ub85c \uc804\ub2ec\ud558\uae30<\/h2>\n\n\n\n<p>\ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc758 \uc774\ubca4\ud2b8\ub97c \uc5f0\uacb0\ud588\ub2e4. \uc774\uc81c \uc6b0\ub9ac\ub294 state\ub97c \uc544\ub798\ub85c \uc804\ub2ec\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p><em>TodoActivityScreen<\/em>\uc744 \uc218\uc815\ud558\uc5ec <em>observeAsState<\/em>\ub97c \uc0ac\uc6a9\ud558\ub294 <em>todoItems<\/em> <em>LiveData<\/em>\ub97c \uc218\uc815\ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><strong>\/\/ TodoActivity.kt<\/strong>\n@Composable\nprivate fun TodoActivityScreen(todoViewModel: TodoViewModel) {\n\u00a0 \u00a0val items: List&lt;TodoItem> by todoViewModel.todoItems.observeAsState(listOf())\n\u00a0 \u00a0TodoScreen(\n\u00a0 \u00a0 \u00a0 \u00a0items = items,\n\u00a0 \u00a0 \u00a0 \u00a0onAddItem = { todoViewModel.addItem(it) },\n\u00a0 \u00a0 \u00a0 \u00a0onRemoveItem = { todoViewModel.removeItem(it) }\n\u00a0 \u00a0)\n}<\/code><\/pre>\n\n\n\n<p><meta charset=\"utf-8\"><em>observeAsState<\/em> \uc774 \ud55c\uc904\uc740 <em>LiveData<\/em>\ub97c \uad00\ucc30\ud558\uace0 \ud604\uc7ac \uac12\uc744 \uc989\uc2dc <em>List&lt;TodoItem><\/em>\uc73c\ub85c \uc0ac\uc6a9\ud558\uac8c \ud55c\ub2e4.<\/p>\n\n\n\n<p>\uc774 \ud55c\uc904\uc5d0 \ub9ce\uc740 \ub0b4\uc6a9\uc774 \ud3ec\ud568\ub418\uc5b4\uc788\ub294\ub370, \ud558\ub098\uc529 \ubd84\uc11d\ud574\ubcf4\uc790.<\/p>\n\n\n\n<ul><li><em>val items: List&lt;TodoItem><\/em>\ub294 <em>List&lt;TodoItem><\/em> \ud0c0\uc785\uc758 <em>items<\/em> \ubcc0\uc218\ub97c \uc120\uc5b8\ud55c\ub2e4.<\/li><li><em>todoViewModel.todoItems<\/em>\ub294 <em>ViewModel<\/em>\uc5d0\uc11c\uc758 <em>LiveData&lt;List&lt;TodoItems>><\/em>\ub2e4<\/li><li><em>.observeAsState<\/em>\ub294 <em>LiveData&lt;T><\/em>\ub97c \uad00\ucc30\ud558\uace0 \uc774\ub97c <em>State&lt;T><\/em> \uac1d\uccb4\ub85c \ubcc0\ud658\ud55c\ub2e4. \uadf8\ub798\uc11c \ucef4\ud3ec\uc988\uac00 \ubcc0\uacbd\ub41c \uac12\uc5d0 \ubc18\uc751\ud560 \uc218 \uc788\ub2e4.<\/li><li><em>listOf()<\/em>\ub294 <em>LiveData<\/em>\uac00 \ucd08\uae30\ud654 \ub418\uae30 \uc804, \uac00\ub2a5\ud55c <em>null<\/em> \uacb0\uacfc\ub97c \ud68c\ud53c\ud558\uae30 \uc704\ud574 \uc0ac\uc6a9\ud558\ub294 \ucd08\uae30\uac12\uc774\ub2e4. <em>items<\/em>\ub97c \uc804\ub2ec\ud558\uc9c0 \uc54a\uc73c\uba74, <em>items<\/em>\ub294 nullable\ud55c <em>List&lt;TodoItem>?<\/em> \ud0c0\uc785\uc774 \ub41c\ub2e4.<\/li><li><em>by<\/em>\ub294 \ucf54\ud2c0\ub9b0\uc758 property delegate \ubb38\ubc95\uc774\ub2e4. \uc774\ub294 <em>State&lt;List&lt;TodoItem>><\/em>\ub97c <em>observeAsState<\/em>\ub97c \ud1b5\ud574 \uc790\ub3d9\uc73c\ub85c \uc5b8\ub798\ud551\ud558\uc5ec \uc77c\ubc18\uc801\uc778 <em>List&lt;TodoItem><\/em>\ub85c \ub9cc\ub4e4\uc5b4 \uc900\ub2e4.<\/li><\/ul>\n\n\n\n<blockquote class=\"wp-block-quote\"><p>observeAsState\ub294 LiveData\ub97c \uad00\ucc30\ud558\uace0, LiveData\uac00 \ubcc0\uacbd\ub420 \ub54c\ub9c8\ub2e4 \uc5c5\ub370\uc774\ud130\ub418\ub294 State\uac1d\uccb4\ub97c \ubc18\ud658\ud55c\ub2e4. <\/p><p>\ucef4\ud3ec\uc800\ube14\uc774 \ucef4\ud3ec\uc9c0\uc158\uc73c\ub85c\ubd80\ud130 \uc81c\uac70\ub420 \ub54c, \uc790\ub3d9\uc73c\ub85c \uad00\ucc30\uc744 \uc911\ub2e8\ud55c\ub2e4.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">\uc571 \ub2e4\uc2dc \uc2e4\ud589\ud558\uae30<\/h2>\n\n\n\n<p>\uc571\uc744 \ub2e4\uc2dc \uc2dc\uc791\ud558\uace0 \ub3d9\uc801\uc73c\ub85c \uc5c5\ub370\uc774\ud2b8 \ub418\ub294 \ubaa9\ub85d\uc744 \ubcfc \uc218 \uc788\ub2e4. \ud558\ub2e8\uc758 \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uba74 \uc0c8\ub85c\uc6b4 \uc544\uc774\ud15c\uc774 \ucd94\uac00\ub418\uace0, \uc544\uc774\ud15c\uc744 \ud074\ub9ad\ud558\uba74 \uc81c\uac70\ub41c\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70-1.png\" alt=\"\" class=\"wp-image-45629\" width=\"479\" height=\"605\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70-1.png 638w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2021\/11\/www.charlezz.com-using-state-in-jetpack-compose-viewmodel-a10327d5d1f3ae70-1-237x300.png 237w\" sizes=\"(max-width: 479px) 100vw, 479px\" \/><\/figure>\n\n\n\n<p>\uc774 \uc139\uc158\uc5d0\uc11c\ub294 \ucef4\ud3ec\uc988\uc640 ViewModel\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984 \uc124\uacc4\ub97c \uc5b4\ub5bb\uac8c \ub9cc\ub4dc\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uc558\ub2e4. \ub610\ud55c <strong>stateless<\/strong> \ucef4\ud3ec\uc800\ube14 \uc0ac\uc6a9\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc558\ub2e4. \uc774\ub97c \ud1b5\ud574 <strong>state hoisting(\uc0c1\ud0dc \ub04c\uc5b4\uc62c\ub9ac\uae30)<\/strong>\uc774\ub77c \ubd88\ub9ac\ub294 \uae30\uc220\uc744 \uc0ac\uc6a9\ud558\uace0 stateful\ud55c UI\ub97c \ud654\uba74\uc5d0 \ub098\ud0c0\ub0c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0 state \ubc0f event \uc6a9\uc5b4\uce21\uba74\uc5d0\uc11c \ub3d9\uc801\uc778 UI\uc5d0 \ub300\ud574 \uc0dd\uac01\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc558\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c state\ub97c \ucef4\ud3ec\uc800\ube14 \ud568\uc218\uc5d0 \ucd94\uac00\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc9c0\ub09c \uc139\uc158\uc5d0\uc11c ViewModel\uacfc LiveData\ub97c \uc0ac\uc6a9\ud558\ub294 \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc5d0 \ub300\ud574\uc11c \uc0b4\ud3b4\ubcf4\uc558\ub2e4. \uc774\uc81c\ub294 \ucef4\ud3ec\uc988\ub85c \uc62e\uaca8\uac00\uc11c \uc5b4\ub5bb\uac8c \ub2e8\ubc29\ud5a5 \ub370\uc774\ud130 \ud750\ub984\uc744 \ucef4\ud3ec\uc988\uc5d0\uc11c ViewModel\uacfc \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uc790. \uc774\uc804 \uc139\uc158\uc744 \b\uc77d\uc9c0 \uc54a\uc740 \uc0ac\ub78c\uc744 \uc704\ud574, \ub2e4\uc2dc \ud55c\ubc88 \uc544\ub798\uc758 3\uac00\uc9c0 \uc6a9\uc5b4\uc5d0 \ub300\ud574\uc11c \uc9da\uace0 \ub118\uc5b4\uac00\uc790. State &#8211; \uc2dc\uac04\uc5d0 \ub530\ub77c \ubcc0\uacbd \ub420 \uc218 \uc788\ub294 \uc5b4\ub5a4 \uac12 Event &#8211; \ud504\ub85c\uadf8\ub7a8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[38],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45623"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=45623"}],"version-history":[{"count":1,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45623\/revisions"}],"predecessor-version":[{"id":45630,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/45623\/revisions\/45630"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=45623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=45623"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=45623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}