00.stencil:03.stencilの_propと_state
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| 00.stencil:03.stencilの_propと_state [2019/09/25] – 作成 adash333 | 00.stencil:03.stencilの_propと_state [2019/09/26] (現在) – [@state()の解説のリンク] adash333 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== 03.Stencilの@propと@state ====== | ====== 03.Stencilの@propと@state ====== | ||
| + | |||
| + | Angularには、双方向データバインディングがあるのですが、Stencilには単方向データバインディングしかないです。 | ||
| + | |||
| + | そのため、Stencilでは、フォームからの入力データを@state()で受け取り、何かに入れて、render()で表示するようにプログラミングする必要があります。 | ||
| + | |||
| + | 引用元:https:// | ||
| + | |||
| + | <code javascript> | ||
| + | componentDidLoad() { | ||
| + | const router = document.querySelector(" | ||
| + | |||
| + | // Refresh data every time view is entered | ||
| + | router.addEventListener(" | ||
| + | const holdings = await Holdings.getHoldings(); | ||
| + | this.holdings = [...holdings]; | ||
| + | }); | ||
| + | } | ||
| + | </ | ||
| 行 9: | 行 27: | ||
| Prop Decorator(公式ドキュメント) | Prop Decorator(公式ドキュメント) | ||
| + | Props should be used to pass data down from the parent component to the child component. | ||
| + | 親コンポーネント内のデータを、子コンポーネントに伝達するためには、親コンポーネント内でデータに@prop()というデコレータをつけて、エクスポートして、それを子コンポーネントで受けとるという作業が必要になります。 | ||
| + | |||
| + | 公式ドキュメントには以下のように記載させています。後で実際に試してみたいと思います。 | ||
| + | |||
| + | 親コンポーネント | ||
| + | <code javascript> | ||
| + | import { Prop } from ' | ||
| + | |||
| + | ... | ||
| + | export class TodoList { | ||
| + | @Prop() color: string; | ||
| + | @Prop() favoriteNumber: | ||
| + | @Prop() isSelected: boolean; | ||
| + | @Prop() myHttpService: | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 子コンポーネントで、上記のcolorを受けとる方法 | ||
| + | < | ||
| + | logColor() { | ||
| + | console.log(this.color) | ||
| + | } | ||
| + | </ | ||
| ===== @state()の解説のリンク ===== | ===== @state()の解説のリンク ===== | ||
| 行 16: | 行 58: | ||
| https:// | https:// | ||
| State Decorator(公式ドキュメント) | State Decorator(公式ドキュメント) | ||
| + | |||
| + | 内容が変化する可能性のあるデータには、 | ||
| + | @state()デコレータをつけるそうです。 | ||
| + | |||
| + | Any changes to a @State() property will cause the components render function to be called again. | ||
| + | @State() propertyが変更されるたびに、コンポーネントのrender関数が呼び出される(再描画される)。 | ||
| + | |||
| + | https:// | ||
| + | |||
| + | コンポーネント | ||
| + | < | ||
| + | @State() holdings: Holding[] = []; | ||
| + | </ | ||
| + | と、holdingsに@State()をつけることで、 | ||
| + | < | ||
| + | componentDidLoad() { | ||
| + | const router = document.querySelector(" | ||
| + | |||
| + | // Refresh data every time view is entered | ||
| + | router.addEventListener(" | ||
| + | const holdings = await Holdings.getHoldings(); | ||
| + | this.holdings = [...holdings]; | ||
| + | }); | ||
| + | } | ||
| + | </ | ||
| + | により、ページのアドレスが変化するたびに、holdingsが再描画されて、表示されるものが最新のものになるようにしています。 | ||
| + | |||
| + | |||
00.stencil/03.stencilの_propと_state.1569383265.txt.gz · 最終更新: 2019/09/25 by adash333
